Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate联接生成的sql为空;关于;条款_Java_Hibernate_Orm_Hql_Jpql - Fatal编程技术网

Java Hibernate联接生成的sql为空;关于;条款

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

我无法使用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_, 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无法识别并为同一个类创建联接