Java Hibernate查询:从联接表中获取类的数据

Java Hibernate查询:从联接表中获取类的数据,java,sql,hibernate,hql,Java,Sql,Hibernate,Hql,我使用Hibernate设置了两个类: (为清晰起见,简化如下) ClassOne @Entity @Table( name = "SCHEMA.TBLONE" ) public class ClassOne { @Id @Column( name = "DCDINO" ) private String idField; @Column( name = "DCGNUM", nullable = false ) private String fieldTwo; @OneToOne( mapped

我使用Hibernate设置了两个类: (为清晰起见,简化如下)

ClassOne

@Entity
@Table( name = "SCHEMA.TBLONE" )
public class ClassOne {

@Id
@Column( name = "DCDINO" )
private String idField;
@Column( name = "DCGNUM", nullable = false )
private String fieldTwo;
@OneToOne( mappedBy = "classOne" )
@Cascade( value = org.hibernate.annotations.CascadeType.ALL )
private ClassTwo classTwo;
第二类

@Entity
@Table( name = "SCHEMA.TBLTWO" )
public class ClassTwo {

@Id
@Column( name = "DDDINO", nullable = false )
private String idField;
@Column( name = "DDFRNM", nullable = false )
private String fieldTwo;
@OneToOne
@PrimaryKeyJoinColumn
private ClassOne classOne;
可以看出,这两个表连接在一起并共享“idField”。
当我对数据库进行如下查询时,所有内容都正确地连接在一起,并按预期填充:(使用正确的参数)

我现在遇到的问题是,我现在需要能够填充ClassOne,但不知道idField的值。我知道这两个类的fieldTwo的值,但完全不知道如何将其写入查询的形式

我已经看过了,但一直无法使它工作。我知道我可以用单个变量对每个表进行查询,并以这种方式填充对象。但是,我相信如果我能在一个小时内完成这项工作,数据库的工作会更快/更容易/更少


有谁能为我指出实现这一目标的正确方向吗?我刚接触SQL和数据库,不知道从哪里开始找

如果从单个实体中选择,则不需要join,因此代码可能如下所示
“来自ClassOne,其中fieldTwo=:fieldTwo”

我发现这个问题非常令人困惑,但如果我理解正确,您可能希望从关系中获得ClassOne,如下所示:

假设你知道二班的id

Query query = session
.createQuery( "SELECT c1 FROM ClassOne c1 JOIN ClassTwo c2 ON c1 = c2.classOne WHERE 
c2.fieldTwo= :fieldTwo );
query.setString( "fieldTwo", fieldTwo );

如果我正确理解您的问题,您应该能够在where子句中包含第二类字段,如下所示:

Query query = session
    .createQuery( "FROM ClassOne c1 WHERE c1.classTwo.fieldTwo = :fieldTwo" );

query.setString( "fieldTwo", fieldTwo );

我为这个不清楚的问题道歉。我不知道idField的价值是什么。我知道二班的第二场是什么。我希望能够使用此信息获取ClassOne的idField。它不是。但只要说是。。我有更多的字段,当它们放在一起时,将返回一个唯一的结果。为了简单起见,我在问题中只使用了一个。
Query query = session
    .createQuery( "FROM ClassOne c1 WHERE c1.classTwo.fieldTwo = :fieldTwo" );

query.setString( "fieldTwo", fieldTwo );