我有一张带有forign键的表,如下所示:
@NotNull
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="BASE_ID", updatable = false)
private Base base;
使用" id"连接到Base表。 ..我试图用where子句查询它,但我遇到了错误,我的查询看起来像:
return getEntityManager()
.createQuery("SELECT a FROM BaseEventLog a join fetch a.base p WHERE p.eventStatus = 'ERROR'",
BaseEventLog.class)
.getResultList();
在sql中它看起来像这样:
SELECT *
FROM BASE_EVENT_LOG
JOIN BASE
ON BASE.ID=BASE_EVENT_LOG.BASE_ID
WHERE EVENT_STATUS = 'ERROR'
有关如何使用jpsql创建此类查询的任何建议吗?
答案 0 :(得分:0)
SELECT a FROM BaseEventLog a
join a.base p
WHERE p.eventStatus = 'ERROR'
不需要fetch
;或者至少我从未在JPQL中使用它。如果你想使用fetch关键字,请看一下如何在这里使用它:
http://docs.oracle.com/cd/E17904_01/apirefs.1111/e13946/ejb3_langref.html#ejb3_langref_fetch_joins