提取的关联上不允许使用子句

sor*_*sen 5 mysql hibernate jpa jpa-2.1

我有一个类似下面的名称查询-但是不断从Hibernate收到一个错误,因为我正在执行联接提取,所以它不允许我的“ with”子句。

我需要加入联接-因为它有一个相关的项目,所以我不希望它出现在对象上。

    @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 "),
Run Code Online (Sandbox Code Playgroud)

建议将“ with”部分移到我的where子句中-但这会导致无效的结果。

考虑可能与项目A相关的项目A-但对于某些商店,关系无效。

如果放在where子句中,那么没有关系的商店将不会显示主要项目,因为SQL将由Hibernate构建,因此它要求如果存在任何关系,那么它们对于商店必须是有效的-否则将不会获取任何内容:-(

因此,经典修复程序发现很多地方(store.id为null或store.id =:storeId)将不起作用。

有人还有其他工作吗?

我正在运行Hibernate 4.3.11

提前致谢

O. *_*nes -5

你需要的ON是关键字而不是WITH关键字。