Java Hibernate联接生成的sql为空;关于;条款
我无法使用hibernate HQL简单连接两个表:Java Hibernate联接生成的sql为空;关于;条款,java,hibernate,orm,hql,jpql,Java,Hibernate,Orm,Hql,Jpql,我无法使用hibernate HQL简单连接两个表: Query query =em.createQuery("select t from Ulist t inner join UlistTp tp"); 我得到org.hibernate.exception.sqlgrammareexception: Hibernate: select ulist0_.id as id1_2_, ulist0_.ACTUAL as ACTUAL2_2_, ulist0_.CD as CD3_2_, ulist
Query query =em.createQuery("select t from Ulist t inner join UlistTp tp");
我得到org.hibernate.exception.sqlgrammareexception:
Hibernate: select ulist0_.id as id1_2_, ulist0_.ACTUAL as ACTUAL2_2_, ulist0_.CD as CD3_2_, ulist0_.DT1 as DT4_2_, ulist0_.DT2 as DT5_2_, ulist0_.NAME as NAME6_2_, ulist0_.S1 as S7_2_, ulist0_.FK_LISTTP as FK_LISTTP8_2_ from EXS.U_LIST ulist0_ inner join EXS.U_LISTTP ulisttp1_ on
10:32:46.562 [main] ERROR o.h.e.jdbc.spi.SqlExceptionHelper - ORA-00936: missing expression
当我看到它时,我发现“ON”子句是空的!为什么?
我认为,我的实体映射得很好:
@Entity
@Table(name = "U_LIST", schema="EXS")
public class Ulist implements java.io.Serializable {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_EXS")
@SequenceGenerator(name="SEQ_EXS", sequenceName="EXS.SEQ_U_LIST", allocationSize=1)
@Column(name = "id", unique=true, updatable = false, nullable = false)
private Integer id;
@Column(name = "CD", updatable = true, nullable = true)
private String cd;
@Column(name = "NAME", updatable = true, nullable = true)
private String name;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name="FK_LISTTP", referencedColumnName="ID")
private UlistTp ulistTp;
...getters
...setters
}
@Entity
@Table(name = "U_LISTTP", schema="EXS")
public class UlistTp implements java.io.Serializable {
public UlistTp() {
}
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_EXS")
@SequenceGenerator(name="SEQ_EXS", sequenceName="EXS.SEQ_U_LISTTP", allocationSize=1)
@Column(name = "id", unique=true, updatable = false, nullable = false)
private Integer id;
@Column(name = "CD", updatable = true, nullable = true)
private String cd;
@Column(name = "NAME", updatable = true, nullable = true)
private String name;
@OneToMany(fetch = FetchType.LAZY)
@JoinColumn(name="FK_LISTTP", referencedColumnName="ID")
@Fetch(FetchMode.SUBSELECT)
private List<Ulist> ulist = new ArrayList<Ulist>(0);
...getters
...setters
}
@实体
@表(name=“U_列表”,schema=“EXS”)
公共类Ulist实现java.io.Serializable{
@身份证
@GeneratedValue(策略=GenerationType.SEQUENCE,generator=“SEQ_EXS”)
@SequenceGenerator(name=“SEQ_-EXS”,sequenceName=“EXS.SEQ_-LIST”,allocationSize=1)
@列(name=“id”,unique=true,updateable=false,nullable=false)
私有整数id;
@列(name=“CD”,updateable=true,nullable=true)
私有字符串cd;
@列(name=“name”,updateable=true,nullable=true)
私有字符串名称;
@manytone(fetch=FetchType.EAGER)
@JoinColumn(name=“FK_LISTTP”,referencedColumnName=“ID”)
私人UlistTp UlistTp;
…获得者
…二传手
}
@实体
@表(name=“U_LISTTP”,schema=“EXS”)
公共类UlistTp实现java.io.Serializable{
公共UlistTp(){
}
@身份证
@GeneratedValue(策略=GenerationType.SEQUENCE,generator=“SEQ_EXS”)
@SequenceGenerator(name=“SEQ_-EXS”,sequenceName=“EXS.SEQ_-U-LISTTP”,allocationSize=1)
@列(name=“id”,unique=true,updateable=false,nullable=false)
私有整数id;
@列(name=“CD”,updateable=true,nullable=true)
私有字符串cd;
@列(name=“name”,updateable=true,nullable=true)
私有字符串名称;
@OneToMany(fetch=FetchType.LAZY)
@JoinColumn(name=“FK_LISTTP”,referencedColumnName=“ID”)
@Fetch(FetchMode.SUBSELECT)
私有列表ulist=newarraylist(0);
…获得者
…二传手
}
我使用:
spring framework 4.2.5.1版本
Hibernate 5.1.0.Final
Oracle 11G试试这个
Query Query=em.createQuery(“从Ulist t内部连接中选择tt.ulistTptp”) 它现在可以工作了,但是请你解释一下你的答案。你需要引用在Ulist中定义为属性的对象。由于您已经引用了UlistTp的direct类,Hibernate无法识别并为同一个类创建联接