【发布时间】:2015-11-30 11:45:29
【问题描述】:
我用 Hibernate 设置了 2 个类: (为清楚起见,在下面进行了简化)
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;
可以看出,这 2 个表已连接并共享“idField”。
当我像这样对数据库进行查询时,所有内容都正确连接在一起并按预期填充:(使用正确的参数)
Query query = session
.createQuery( "FROM ClassOne WHERE
idField= :idField AND fieldTwo = :fieldTwo" );
query.setString( "idField", idField );
query.setString( "fieldTwo", fieldTwo );
我遇到的问题是我现在需要能够填充 ClassOne 但不知道 idField 的值。我知道这两个类的 fieldTwo 的值,但完全不知道如何将其写入查询的形式。
我查看了Query by Example,但无法使其正常工作。我知道我可以使用单个变量对每个表进行查询并以这种方式填充对象。但是,我相信如果我能一次性做到这一点,那么数据库的工作会更快/更容易/更少。
谁能指出我实现这一目标的正确方向?我是使用 SQL 和数据库的新手,不知道从哪里开始寻找。
【问题讨论】: