【发布时间】:2015-12-22 01:19:20
【问题描述】:
我有一个如下所示的名称查询 - 但不断收到来自 Hibernate 的错误,它不允许我的 'with' 子句,因为我正在执行 join fetch。
我需要加入获取 - 因为它有一个相关的项目,然后我不希望它出现在对象上。
@NamedQuery(name = "Item.findItem",
query = "SELECT DISTINCT(c) FROM Item c " +
"JOIN FETCH c.storeRelations as childStoreRelation " +
"LEFT JOIN FETCH c.relatedItems as relatedRelations WITH relatedRelations.store.id = childStoreRelation.store.id " +
"WHERE c.id = :itemId " +
"AND childStoreRelation.store.id = :storeId " +
"AND childStoreRelation.deleted <> 'Y' " +
"ORDER BY c.partnumber "),
建议将“with”部分移到我的 where 子句中 - 但这会导致无效结果。
考虑可能与与之相关的项目的项目 A - 但对于某些商店,关系无效。
如果放在 where 子句中,那么没有关系的存储将不会显示主要项目,因为 SQL 将由 Hibernate 构建,因此它要求如果存在任何关系,那么它们必须对存储有效 - 否则不会获取任何内容: -(
所以发现很多地方的经典修复(store.id 为 null 或 store.id = :storeId)将不起作用。
有人有其他解决方法吗?
我正在运行 Hibernate 4.3.11
提前致谢
【问题讨论】:
标签: mysql hibernate jpa jpa-2.1