我有2类建立与Hibernate找类数据: (下面简化为清楚起见)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;
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;
由于可以s een,这两个表被加入并共享'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的形式。我看过Query by Example,但一直无法使其工作。我知道我可以使用单个变量对每个表进行查询,并以这种方式填充对象。但是,如果我能够以一种方式做到这一点,我相信这对数据库来说会更快/更容易/更少工作。
有人能指出我在正确的方向来实现这一目标吗?我新来SQL和数据库工作,不知道从哪里开始寻找。
我对不清楚的问题表示歉意。我不知道idField的价值是什么。我知道什么是**领域两个** ** ClassTwo **。我希望能够使用这些信息获得ClassOne的idField。 – Jay
FieldTwo是独一无二的吗? – Miles
它不是。但只是说它是..我有更多的领域,当放在一起将返回一个独特的结果。为了简单起见,我只是在问题中使用了一个。 – Jay