Mysql 获取的关联上不允许with子句
我有一个类似于下面的名称查询-但不断从Hibernate得到一个错误,它将不允许我的'with'-子句,因为我正在执行join fetch 我需要执行join fetch-因为它有一个相关项,所以我不希望它出现在对象上Mysql 获取的关联上不允许with子句,mysql,hibernate,jpa,jpa-2.1,Mysql,Hibernate,Jpa,Jpa 2.1,我有一个类似于下面的名称查询-但不断从Hibernate得到一个错误,它将不允许我的'with'-子句,因为我正在执行join fetch 我需要执行join fetch-因为它有一个相关项,所以我不希望它出现在对象上 @NamedQuery(name = "Item.findItem", query = "SELECT DISTINCT(c) FROM Item c " + "JOIN FETCH c.
@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 "),
@NamedQuery(name=“Item.findItem”,
query=“从项目c中选择不同的(c)”+
“将获取c.storeRelations作为ChildStoreRelations连接”+
“将c.relatedItems作为relatedRelations与relatedRelations.store.id=ChildStoreRelations.store.id的左侧联接获取”+
“其中c.id=:itemId”+
“和childStoreRelation.store.id=:storeId”+
“和childStoreRelation.deleted'Y”+
“按c.零件号订购”),
建议将“with”部分移动到my where子句,但这将导致无效结果
考虑项目A,该项目可能与相关项目有关,但对于某些商店,关系无效
如果放入where子句,则不带关系的存储将不会显示为主项,因为SQL将由Hibernate生成,因此它要求如果存在任何关系,则它们必须对存储有效-否则不会获取任何内容:-(
因此,经典的修复程序发现很多地方(store.id为null或store.id=:storeId)都不起作用
有人有别的工作吗
我正在运行Hibernate 4.3.11
提前感谢您需要的是
ON
关键字,而不是WITH
关键字。在获取的关联上仍然不允许使用“WITH”子句;在替换“WITH”->“ON”时使用“filters”