[英]JPQL : How to construct a WHERE clause?
我想在JPQL中创建一个namedquery,但是我不知道它是如何工作的...
这是我的实体:
@Entity
@NamedQueries({
@NamedQuery(name = "Translation.lang",
query = "SELECT t FROM Translation t WHERE t.reference.id = :refId AND t.language.lang = :lang")
})
@Table(name = "T_E_TRANSLATION_TRL")
public class Translation implements java.io.Serializable {
@Id
@Column(name = "TRL_ID", unique = true, nullable = false)
@TableGenerator(name="translationSeqStore",
table="T_S_APP_SEQ_STORE_AST",
pkColumnName="AST_SEQ_NAME",
valueColumnName = "AST_SEQ_VALUE",
pkColumnValue = "T_E_TRANSLATION_TRL.TRL_ID",
allocationSize=1)
@GeneratedValue(strategy=GenerationType.TABLE,
generator="translationSeqStore")
private Integer id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "TRL_REF_ID", nullable = false)
private Reference reference;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "TRL_LAN_ID", nullable = false)
private Language language;
@Column(name = "TRL_LABEL", nullable = false, length = 4000)
private String label;
我应该在参考和语言上使用LEFT JOIN选择具有这些ID的翻译吗?
谢谢。
我想你要:
SELECT t FROM Translation t join fetch t.reference join fetch t.language WHERE t.reference.id = :refId AND t.language.lang = :lang
这将加入(并获取延迟引用和语言),并返回Translation
为ID的Reference中refId
和语言与LANG = lang
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.