gpt4 book ai didi

java - Hibernate 使用 where 子句中的连接列创建查询

转载 作者:行者123 更新时间:2023-12-02 09:41:29 25 4
gpt4 key购买 nike

我有一个表,其表结构如下

package com.abc.domain;


@Entity
@Table(
name = "ENTITY_DTL"
)

public class MyEntityDtl implements Serializable {

private static final long serialVersionUID = 1L;
private static final int NATLTY_CD_LENGTH = 3;


@Id
@Column(
name = "MY_ENTITY_DTL_ID",
unique = true,
nullable = false
)
@GeneratedValue(
strategy = GenerationType.SEQUENCE,
generator = "myEntityDtlIdSeq"
)
@SequenceGenerator(
name = "myEntityDtlIdSeq",
sequenceName = "MY_ENTITY_DTL_ID_SEQ",
allocationSize = 1
)
private Long MyEntityDtlId;



@ManyToOne(
fetch = FetchType.LAZY
)
@JoinColumns({@JoinColumn(
name = "ENTITY_ID",
referencedColumnName = "ENTITY_ID",
nullable = false
), @JoinColumn(
name = "ENTITY_TYPE_CD",
referencedColumnName = "ENTITY_TYPE_CD",
nullable = false
)})
private MyEntity myEntity;


/*
other columns and their getter setter
*/


}

这里-我想要实现的是-类似这样的

使用此列 - ENTITY_ID 和 ENTITY_TYPE_CD 将 MyEntityDtl 表与 Abc 表连接起来。

如何在查询中不使用 MyEntity 表来实现它。

因为在这种情况下我需要额外加入

感谢任何帮助,提前谢谢

最佳答案

由于获取类型是惰性的,我直接使用连接列来创建连接,不会因为获取类型lzay而影响查询性能 -

 Query query = getEntityManager().createQuery("SELECT abc FROM ABC abc, MyEntityDtl medtl join medtl.myEntity  me " +
" WHERE vsf.rqstId = me.entityId AND " +
" me.entityTypeCd = '?' AND " +
" medtl.SOME_OTHER_COLUMN= '?' " ;
query.setParameter("entityTypeCd", VALUE);
query.setParameter("SOME_OTHER_COLUMN", VALUE);

关于java - Hibernate 使用 where 子句中的连接列创建查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57034942/

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