Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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 如何在JPQL中加入三个类?_Mysql_Jpa_Jpql - Fatal编程技术网

Mysql 如何在JPQL中加入三个类?

Mysql 如何在JPQL中加入三个类?,mysql,jpa,jpql,Mysql,Jpa,Jpql,我有以下课程: @Entity public class Equipements implements Serializable{ @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private long idEquipements; @OneToMany(mappedBy="equipements", cascade=CascadeType.ALL, fetch=FetchType.LAZY) private C

我有以下课程:

@Entity
public class Equipements implements Serializable{

@Id
 @GeneratedValue(strategy=GenerationType.IDENTITY)
    private long idEquipements;

@OneToMany(mappedBy="equipements", cascade=CascadeType.ALL, fetch=FetchType.LAZY)
    private Collection<CheckLists> checks;
}

@Entity
public class CheckLists implements Serializable{

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private long idCheckLists;

private String titreCheck;

    private String recommendation;

    @ManyToOne
    @JoinColumn(name="equipements_id")
    private Equipements equipements;

    @OneToMany(mappedBy="CheckLts", cascade=CascadeType.ALL, fetch=FetchType.LAZY)
    private Collection <ResponsesCheckLists> ResponsesChecks;
}

@Entity
public class ResponsesCheckLists implements Serializable{
@Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private long idResponsesCHeck;

    @ManyToOne
    @JoinColumn(name="missionsId")
    private Missions Respmission;

    @ManyToOne
    @JoinColumn(name="checkLists_Id")
    private CheckLists CheckLts;
}
我跟踪了internet上的文档,但没有在JPQL中获得查询的正确转换

以下查询仅显示在类响应检查列表中回答的检查列表:

@Query(
            "SELECT checks, r "
            + " FROM CheckLists checks "
            + " inner join checks.ResponsesChecks r"
            + " WHERE checks.equipements.idEquipements = :idEqp "
            + " AND r.Respmission.idMission= :idmiss "
            + " ORDER BY checks.idCheckLists ASC"
        )
我知道查询的属性将被类的属性替换。但是如何同时加入三个班

Edit1:

@Query(
            "SELECT c, r "
            +" FROM CheckLists c"
            +" LEFT JOIN c.ResponsesChecks r"
            +" JOIN fetch c.equipements e"
            +" JOIN fetch r.Respmission m"
            +" WHERE e.idEquipements = :idEqp"
            +" AND m.idMission= :idmiss"
            +" ORDER BY c.idCheckLists ASC"
        )
@Query(
            "SELECT e "
                    +" FROM Equipements e , CheckLists c"
                    //+" LEFT JOIN fetch e.checks c "
                    +" LEFT JOIN c.ResponsesChecks r"
                    + " where e.idEquipements = :idEqp "
                    + " and r.Respmission.idMission = :idmiss "
                    + " order by c.idCheckLists asc"

     )
[
{
"idEquipements": 1,
"nomEq": "Info",
"dateAjoutEq": "2017/04/09 20:37:58",
"dateModificationEq": "2017/04/09 20:48:40",
"checks": [] //133 items
},
{
"idEquipements": 1,
"nomEq": "Info",
"dateAjoutEq": "2017/04/09 20:37:58",
"dateModificationEq": "2017/04/09 20:48:40",
"checks": []//133 items
}
此请求不显示“CheckLists”类的所有检查表和已应答的检查表(可在“responseChecklists”类中找到)

Edit2:

@Query(
    "SELECT e "
         +" FROM Equipements e"
         +" LEFT JOIN fetch e.checks c "
         +" LEFT JOIN fetch c.ResponsesChecks r"
         + " where e.idEquipements = :idEqp "
          + " and r.Respmission.idMission = :idmiss "
          + " order by c.idCheckLists asc"
     )
编辑2的错误:

1-Servlet.service(),用于具有的上下文中的Servlet[dispatcherServlet] 路径[/App]引发异常[请求处理失败;嵌套 例外是 org.springframework.http.converter.HttpMessageNotWritableException: 无法写入内容:无限递归(StackOverflower错误)

2-3456---[nio-8099-exec-3] .w.s.m.s.DefaultHandlerException解析器:处理 [org.springframework.http.converter.HttpMessageNotWritableException] 导致异常java.lang.IllegalStateException:无法调用 提交响应后的sendError()

错误Edit2的解决方案;

添加注释@JsonIgnore

   @JsonIgnore 
    Public Set <CheckLists> getChecks () 
    { 
    Return checks;
     }
Edit3的结果:

@Query(
            "SELECT c, r "
            +" FROM CheckLists c"
            +" LEFT JOIN c.ResponsesChecks r"
            +" JOIN fetch c.equipements e"
            +" JOIN fetch r.Respmission m"
            +" WHERE e.idEquipements = :idEqp"
            +" AND m.idMission= :idmiss"
            +" ORDER BY c.idCheckLists ASC"
        )
@Query(
            "SELECT e "
                    +" FROM Equipements e , CheckLists c"
                    //+" LEFT JOIN fetch e.checks c "
                    +" LEFT JOIN c.ResponsesChecks r"
                    + " where e.idEquipements = :idEqp "
                    + " and r.Respmission.idMission = :idmiss "
                    + " order by c.idCheckLists asc"

     )
[
{
"idEquipements": 1,
"nomEq": "Info",
"dateAjoutEq": "2017/04/09 20:37:58",
"dateModificationEq": "2017/04/09 20:48:40",
"checks": [] //133 items
},
{
"idEquipements": 1,
"nomEq": "Info",
"dateAjoutEq": "2017/04/09 20:37:58",
"dateModificationEq": "2017/04/09 20:48:40",
"checks": []//133 items
}
-我进行了一个JPQL查询,以显示已回答(答案在“ResponseCheckList”类中)和尚未回答(列表的其余部分在“CheckList”类中)的检查表列表。但我的测试显示设备对象加倍

谢谢大家,

     "SELECT e "
        +" FROM Equipements "
        +" LEFT JOIN fetch e.checks c "
        +" LEFT JOIN fetch c.ResponsesChecks r"
        +" WHERE ...."
这将返回已获取集合的实体


这将返回集合已获取的实体

如果您遵循JPA文档,您将知道连接跨越关系。要让人们建议您的连接应该是什么,您也需要发布实体,显示关系,并显示您已尝试的内容。如您所说,先生,您为什么要删除您的连接回答??如果你关注过JPA文档,你就会知道连接跨越关系。要让人们建议你的连接应该是什么,你也需要发布实体,显示关系,并显示你所做的。正如你所说的,先生,你为什么要删除你的回答?谢谢你的回答,先生,但这显示了以下内容问题:
原因:org.hibernate.loader.MultipleBagFetchException:无法同时提取多个行李:[com.SSC.DAO.Entities.equipments.checks,com.SSC.DAO.Entities.checklist.responseChecks]
这对我来说也是新的…这里有一些不同的解决方案感谢链接,join fetch的问题已经解决。关于请求,我尝试执行您的建议,它只显示设备的信息。当您说display是什么意思?您发出的请求返回设备类的对象:`{“idEquipements”:1,“nomEq”:“xd”,“DateAjoteq”:“2017/04/09 20:37:58”,“dateModificationEq”:“2017/04/09 20:48:40”},`谢谢您的回答,先生,但这显示了以下问题:
由以下原因引起:
这对我来说也是新的…这里有一些不同的解决方案,感谢链接,join fetch解决了问题。关于请求,我尝试执行您的建议,它只显示设备的信息。当您说display是什么意思?您发出的请求返回设备类的对象:`{”理想要素:1,“nomEq”:“xd”,“dateajoteq”:“2017/04/09 20:37:58”,“dateModificationEq”:“2017/04/09 20:48:40”`