gpt4 book ai didi

java - hibernate 查询: Get data for Class from joined tables

转载 作者:行者123 更新时间:2023-11-30 03:09:10 25 4
gpt4 key购买 nike

我用 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;

可以看出,这两个表已连接并共享“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 和数据库的新手,不知道从哪里开始寻找。

最佳答案

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

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

query.setString( "fieldTwo", fieldTwo );

关于java - hibernate 查询: Get data for Class from joined tables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33997878/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com