Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 获取的关联上不允许with子句_Mysql_Hibernate_Jpa_Jpa 2.1 - Fatal编程技术网

Mysql 获取的关联上不允许with子句

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.

我有一个类似于下面的名称查询-但不断从Hibernate得到一个错误,它将不允许我的'with'-子句,因为我正在执行join fetch

我需要执行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 "),
@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”