java - Hibernate 在 where 子句中使用连接列创建查询
问题描述
我有一张表,表结构是这样的
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 表的情况下实现它。
因为这将使我在这种情况下额外加入
任何帮助表示赞赏,在此先感谢您
解决方案
由于 fetch 类型是惰性的,我直接使用 join 列来创建连接,它不会影响查询性能,因为 fetch 类型 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);
推荐阅读
- ios - MGLRasterTileSource 绘制在 MGLOverlay 上方或其他不需要的图层下方。我如何获得正确的 z 顺序?
- arrays - 从Awk中的多维数组中的子数组获取最小值和最大值
- c# - 如何使用 Web 客户端获得的值迭代公共常量?
- macos - 在 SwiftUI DocumentGroup macOS 中创建并打开一个新文档
- c# - 更改路径标记语法的数据属性的内容?
- python - ScrollBar QStyleSheet 在应该透明时显示为背景
- visual-studio - 将英特尔 Fortran 与 Microsoft Visual Studio 和 ANSYS Autodyn 相连接
- python - discord.py 如何检查文本通道
- amazon-web-services - 在自定义 docker 镜像中安装 Docker
- python - 使用 LSTMcell 自定义 RNN