- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在从我的 Hibernate 实体中获取数据时遇到错误。我已经设置了两个具有关系的实体(OneToMany 和 ManyToOne)。
我尝试将 hibernate.cfg.xml 文件中的 hibernate.dialect 值更改为 org.hibernate.dialect.PostgreSQL82Dialect(因为我使用的值已被弃用)。但运气不好。
我从异常中获取查询并将其运行到 SQL 控制台中。查询不起作用。虽然如果我删除括号,它会。
hibernate .cfg.xml
<?xml version = "1.0" encoding = "utf-8"?>
<!DOCTYPE hibernate-configuration SYSTEM
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name = "hibernate.dialect">
org.hibernate.dialect.PostgreSQL82Dialect
</property>
<property name = "hibernate.connection.driver_class">
org.postgresql.Driver
</property>
<property name = "hibernate.connection.url">
jdbc:postgresql://localhost:5432/udev-mesi
</property>
<property name = "hibernate.connection.username">
JavaRESTfulAPI
</property>
<property name = "hibernate.connection.password"></property>
<property name = "hibernate.hbm2ddl.auto">update</property>
</session-factory>
</hibernate-configuration>
持久性.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name="udevmesi" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>main.java.com.udev.mesi.entities.Constructor</class>
<class>main.java.com.udev.mesi.entities.Model</class>
<properties>
<property name="hibernate.connection.url" value="jdbc:postgresql://localhost:5432/udev-mesi" />
<property name="hibernate.connection.driver_class" value="org.postgresql.Driver" />
<property name="hibernate.connection.username" value="JavaRESTfulAPI" />
<property name="hibernate.connection.password" value="" />
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQL82Dialect"/>
<property name="hibernate.hbm2ddl.auto" value="update" />
</properties>
</persistence-unit>
</persistence>
构造函数.java
package main.java.com.udev.mesi.entities;
import com.udev.mesi.models.WsConstructor;
import javax.persistence.*;
import java.util.List;
@Entity
@Table(name = "constructor")
public class Constructor implements IEntity {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "constructor_id", updatable = false, nullable = false)
public Long id;
@Column(name = "name", nullable = false, length = 50, unique = true)
public String name;
@Column(name = "is_active", nullable = false, columnDefinition = "bool default true")
public boolean isActive;
@OneToMany(fetch=FetchType.EAGER, mappedBy = "constructor")
public List<Model> models;
@Override
// I use this function to convert the entity class into a serializable class for my API
public Object toWs() {
return new WsConstructor(id, name, isActive, models);
}
}
模型.java
package main.java.com.udev.mesi.entities;
import com.udev.mesi.models.WsConstructor;
import com.udev.mesi.models.WsModel;
import javax.persistence.*;
@Entity
@Table(name = "model")
public class Model implements IEntity {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "model_id", updatable = false, nullable = false)
public Long id;
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name = "constructor_id", nullable = false)
public Constructor constructor;
@Column(name = "name", nullable = false, length = 50, unique = true)
public String name;
@Column(name = "is_active", nullable = false, columnDefinition = "bool default true")
public boolean isActive;
@Column(name = "count_eco_slots", nullable = false, columnDefinition = "int default 0")
public int countEcoSlots;
@Column(name = "count_business_slots", nullable = false, columnDefinition = "int default 0")
public int countBusinessSlots;
@Override
public Object toWs() {
return new WsModel(id, (WsConstructor) constructor.toWs(), name, isActive, countEcoSlots, countBusinessSlots);
}
}
从数据库中获取构造函数的方法(在我添加模型类之前使用)
public static WsGetConstructors read() throws JSONException {
// Initialisation de la réponse
String status = "KO";
String message = null;
int code = 500;
List<Constructor> constructors = null;
try {
// Création du gestionnaire d'entités
EntityManagerFactory emf = Persistence.createEntityManagerFactory(Database.UNIT_NAME);
EntityManager em = emf.createEntityManager();
// Récupération des constructeurs depuis la base de données
Query query = em.createQuery("FROM Constructor WHERE isActive = true");
constructors = query.getResultList();
// Création de la réponse JSON
status = "OK";
code = 200;
// Fermeture du gestionnaire d'entités
em.close();
emf.close();
} catch (Exception e) {
message = e.getMessage();
}
return new WsGetConstructors(status, message, code, constructors);
}
这是我遇到的错误:
org.hibernate.exception.SQLGrammarException: JDBC exception executing SQL [select c1_0.constructor_id, c1_0.is_active, m1_0.model_id, c3_0.constructor_id, c3_0.is_active, m3_0.model_id, m3_0.constructor_id, m3_0.count_business_slots, m3_0.count_eco_slots, m3_0.is_active, m3_0.name, c3_0.name, m1_0.count_business_slots, m1_0.count_eco_slots, m1_0.is_active, m1_0.name, m1_0.constructor_id, c1_0.name from constructor as c1_0 left outer join (model as m1_0) on c1_0.constructor_id=m1_0.constructor_id left outer join (constructor as c2_0) on m1_0.constructor_id=c2_0.constructor_id inner join (constructor as c3_0) on m1_0.constructor_id=c3_0.constructor_id left outer join (model as m3_0) on c3_0.constructor_id=m3_0.constructor_id where c1_0.is_active=?]
最佳答案
好的,我想通了。对于我的关系,我只需将获取类型替换为 LAZY:
@OneToMany(fetch=FetchType.LAZY, mappedBy = "constructor")
public List<Model> models;
关于java - org.hibernate.exception.SQLGrammarException 不正确的 postgresql sql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56609272/
我是 Hibernate 新手。我正在尝试实现 OneToMany 和 ManyToOne 映射,同时执行 i 卡住和 SQLGrammarException。 这是类别 (pojo) 类。 pack
我创建了 2 个表:Bank 和 Branches。 我为这两个 POJO 创建了 DAO/BO 类和接口(interface)。 我使用注释映射了它们。 我正在使用 Hibernate 和 Spri
我想在 hibernate 状态下从 base 中删除列,其中我插入的 -regBroj- 参数与 base 中的参数相同。 这是我在 Controller 中删除的方法。但我经常得到SQL语法异常:
我正在执行 hql 查询,但收到一个我不太明白其原因的错误。我做了各种测试,错误似乎不是由我的离开表名引起的。我什至不能做一个简单的“离开”查询,我会收到同样的错误。但是,如果我将工作台数据库中的表重
我有一个数据库,其中有国家/地区表。国家/地区表具有以下结构。 CREATE TABLE `countries` ( `idCountry` int(5) NOT NULL AUTO_INCREM
实体类是: @Entity @Table(name = "movieDetail") public class MovieDetailImpl implements MovieDetail {
我正在使用 Apache Tomcat v9.0,当我运行简单的 MVC 项目时,我收到错误。 外星人级 @Entity(name="alien") public class Alien {
我正在尝试从给定特定用户和最大数量的数据库中获取一定数量的行。这是当前代码的样子: @Override public Collection findMaxByUser(User _user, int
我尝试取回实例 Criteria 中的元素列表。在执行中我得到了这个异常。有什么问题吗? 我的数据库名称是“TransPlusBD”。我的 table 的名字是“gerant”。但错误表明他(它)没有
当执行附带的代码时,我收到了一个 SQLGrammarException,没有进一步的解释。我正在对 mysql 数据库执行此代码。有人能理解这个查询有什么问题吗? public Patien
我有一张表,上面写着Book,其中只有一个column(book_id)作为Serial。我正在使用 Informix 和 openejb 4.7.2。当我尝试在数据库中创建新条目时,出现错误 Ope
我的代码导致 SQLGrammarException当我将空集设置为 SQL IN 参数时: Query query = this.entMngr.createNativeQuery("SELECT
编辑:通过更新所有导入的库(hibernate、postgresql 等)解决了问题。 我想通过 PostgreSQL 中的本地数据库服务器设置一个 hibernate 小应用程序。我提前创建了包含所
我有以下表格: stdqualificationmaster QualificationId studentRegNo CourseName Percentage 1 1
我无法获取结果,正在执行创建查询,但之后将其转换为列表无效。请帮我解决这个问题。为什么它没有被转换成列表我无法获取结果,正在执行创建查询,但之后将其转换为列表无效。请帮我解决这个问题。为什么它没有被转
您好,我在 postgresql 8.4 中使用 hibernate 运行示例,当我尝试添加它时会显示以下错误 org.hibernate.exception.SQLGrammarException:
![out put from cf logs app-name --recent] 1我在基于后端的应用程序中开发了 spring/hibernate-MySQL。我已经在本地机器上成功测试了该应用程
我正在使用 MySQL DB 开发 Spring MVC 应用程序。数据库中的两个表具有一对多关系。 其中一个表格是测验 @Entity @Table(name="Quiz", schema = "Q
我在两个表之间有一个 OneToMany/ManyToOne 关系。表 Partition 中有一个外键引用了 Event 的 id。当我调用 event.getPartitions() 时,它应该在
我正在调用一个函数,该函数试图检查我的 MYSQL 表中是否存在特定记录。 函数: public String get_value(long nodeid,String ts) {
我是一名优秀的程序员,十分优秀!