Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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/6/eclipse/8.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
Json Rest-JPA:异常描述:在对象图中检测到一个循环_Json_Rest_Eclipselink_Moxy - Fatal编程技术网

Json Rest-JPA:异常描述:在对象图中检测到一个循环

Json Rest-JPA:异常描述:在对象图中检测到一个循环,json,rest,eclipselink,moxy,Json,Rest,Eclipselink,Moxy,我相信大家, 我使用JPA创建了一个RestFul服务来访问我的数据库。我用于检测错误et tomcat日志给我: javax.ws.rs.WebApplicationException: HTTP 500 Internal Server Error at org.eclipse.persistence.jaxb.rs.MOXyJsonProvider.writeTo(MOXyJsonProvider.java:865) at org.glassfish.jersey.messa

我相信大家,

我使用JPA创建了一个RestFul服务来访问我的数据库。我用于检测错误et tomcat日志给我:

javax.ws.rs.WebApplicationException: HTTP 500 Internal Server Error
    at org.eclipse.persistence.jaxb.rs.MOXyJsonProvider.writeTo(MOXyJsonProvider.java:865)
    at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.invokeWriteTo(WriterInterceptorExecutor.java:243)
    at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.aroundWriteTo(WriterInterceptorExecutor.java:230)
    at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:149)
    at org.glassfish.jersey.server.internal.JsonWithPaddingInterceptor.aroundWriteTo(JsonWithPaddingInterceptor.java:103)
    at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:149)
    at org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor.aroundWriteTo(MappableExceptionWrapperInterceptor.java:88)
    at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:149)
    at org.glassfish.jersey.message.internal.MessageBodyFactory.writeTo(MessageBodyFactory.java:1139)
    at org.glassfish.jersey.server.ServerRuntime$Responder.writeResponse(ServerRuntime.java:574)
    at org.glassfish.jersey.server.ServerRuntime$Responder.processResponse(ServerRuntime.java:381)
    at org.glassfish.jersey.server.ServerRuntime$Responder.process(ServerRuntime.java:371)
    at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:262)
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:267)
    at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:318)
    at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:236)
    at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1010)
    at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:373)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:382)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:345)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:220)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:799)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1455)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)
Caused by: javax.xml.bind.MarshalException
 - with linked exception:
[Exception [EclipseLink-25037] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.XMLMarshalException
Exception Description: A cycle is detected in the object graph.  This will cause an infinite loop: EJPlanning.Models.Planning@320a92e7 -> EJPlanning.Models.Groupe@d62730a -> EJPlanning.Models.Planning@320a92e7]
    at org.eclipse.persistence.jaxb.JAXBMarshaller.marshal(JAXBMarshaller.java:457)
    at org.eclipse.persistence.jaxb.rs.MOXyJsonProvider.writeTo(MOXyJsonProvider.java:863)
    ... 46 more
Caused by: Exception [EclipseLink-25037] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.XMLMarshalException
Exception Description: A cycle is detected in the object graph.  This will cause an infinite loop: EJPlanning.Models.Planning@320a92e7 -> EJPlanning.Models.Groupe@d62730a -> EJPlanning.Models.Planning@320a92e7
    at org.eclipse.persistence.exceptions.XMLMarshalException.objectCycleDetected(XMLMarshalException.java:401)
    at org.eclipse.persistence.internal.oxm.XPathObjectBuilder.buildRow(XPathObjectBuilder.java:209)
    at org.eclipse.persistence.internal.oxm.TreeObjectBuilder.buildRow(TreeObjectBuilder.java:118)
    at org.eclipse.persistence.internal.oxm.TreeObjectBuilder.buildRow(TreeObjectBuilder.java:1)
    at org.eclipse.persistence.internal.oxm.XMLCompositeCollectionMappingNodeValue.marshalSingleValue(XMLCompositeCollectionMappingNodeValue.java:334)
    at org.eclipse.persistence.internal.oxm.XMLCompositeCollectionMappingNodeValue.marshal(XMLCompositeCollectionMappingNodeValue.java:104)
    at org.eclipse.persistence.internal.oxm.NodeValue.marshal(NodeValue.java:149)
    at org.eclipse.persistence.internal.oxm.NodeValue.marshal(NodeValue.java:102)
    at org.eclipse.persistence.internal.oxm.record.ObjectMarshalContext.marshal(ObjectMarshalContext.java:59)
    at org.eclipse.persistence.internal.oxm.XPathNode.marshal(XPathNode.java:401)
    at org.eclipse.persistence.internal.oxm.XPathObjectBuilder.buildRow(XPathObjectBuilder.java:240)
    at org.eclipse.persistence.internal.oxm.TreeObjectBuilder.buildRow(TreeObjectBuilder.java:118)
    at org.eclipse.persistence.internal.oxm.TreeObjectBuilder.buildRow(TreeObjectBuilder.java:1)
    at org.eclipse.persistence.internal.oxm.XMLCompositeObjectMappingNodeValue.marshalSingleValue(XMLCompositeObjectMappingNodeValue.java:260)
    at org.eclipse.persistence.internal.oxm.XMLCompositeObjectMappingNodeValue.marshal(XMLCompositeObjectMappingNodeValue.java:151)
    at org.eclipse.persistence.internal.oxm.NodeValue.marshal(NodeValue.java:102)
    at org.eclipse.persistence.internal.oxm.record.ObjectMarshalContext.marshal(ObjectMarshalContext.java:59)
    at org.eclipse.persistence.internal.oxm.XPathNode.marshal(XPathNode.java:401)
    at org.eclipse.persistence.internal.oxm.XPathObjectBuilder.buildRow(XPathObjectBuilder.java:240)
    at org.eclipse.persistence.internal.oxm.TreeObjectBuilder.buildRow(TreeObjectBuilder.java:118)
    at org.eclipse.persistence.internal.oxm.TreeObjectBuilder.buildRow(TreeObjectBuilder.java:1)
    at org.eclipse.persistence.internal.oxm.XMLMarshaller.marshal(XMLMarshaller.java:751)
    at org.eclipse.persistence.internal.oxm.XMLMarshaller.marshal(XMLMarshaller.java:571)
    at org.eclipse.persistence.internal.oxm.XMLMarshaller.marshalStreamOrWriter(XMLMarshaller.java:1107)
    at org.eclipse.persistence.internal.oxm.XMLMarshaller.marshal(XMLMarshaller.java:919)
    at org.eclipse.persistence.internal.oxm.XMLMarshaller.marshal(XMLMarshaller.java:862)
    at org.eclipse.persistence.jaxb.JAXBMarshaller.marshal(JAXBMarshaller.java:455)
    ... 47 more
经过多次搜索,我没有找到可能的解决方案。因此,我希望您能帮助我:

public class GroupeMapper extends AbstractFacade  implements IGroupeMapper{

   @PersistenceContext(unitName = "EJPlanningRestPU")
    private EntityManager em;
    private List<Groupe> list;

    public GroupeMapper() {
        super(Groupe.class);
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("EJPlanningRestPU");
        em = emf.createEntityManager();       }

    @Override
    protected EntityManager getEntityManager() {
        return em;
    }

    public void getAll() {
    super.findAll();
    }
public class PlanningMapper extends AbstractFacade  implements IPlanningMapper{


    @PersistenceContext(unitName = "EJPlanningRestPU")
    private EntityManager em;
    private List<Planning> list;

    public PlanningMapper() {
        super(Planning.class);
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("EJPlanningRestPU");
        em = emf.createEntityManager();       }

    @Override
    protected EntityManager getEntityManager() {
        return em;
    }
    public void getAll() {
    super.findAll();
    }
群组:

    @Entity
@XmlRootElement
public class Groupe implements Serializable{
    @Id
    @GeneratedValue(strategy= GenerationType.AUTO)
    @Column(name = "GROUPE_ID")
    private int Id;

    private String Nom;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "Groupe")
    @JoinColumn(name="PLANNING_ID")
    private Collection<Planning> Plannings;

    @ManyToMany
    @JoinTable(name="GroupeActivite", 
            joinColumns=@JoinColumn(name="GROUPE_ID", referencedColumnName="GROUPE_ID"),
            inverseJoinColumns=@JoinColumn(name="ACTIVITE_ID", referencedColumnName="ACTIVITE_ID"))
    private Collection<Activite> Activites;

    public Groupe() {
    }


    public Groupe(String Nom, Collection<Planning> Plannings, Collection<Activite> Activites) {
        this.Nom = Nom;
        this.Plannings = Plannings;
        this.Activites = Activites;
    }

    public int getId() {
        return Id;
    }

    public void setId(int Id) {
        this.Id = Id;
    }

    public String getNom() {
        return Nom;
    }

    public void setNom(String Nom) {
        this.Nom = Nom;
    }

    public Collection<Planning> getPlannings() {
        return Plannings;
    }

    public void setPlannings(Collection<Planning> Plannings) {
        this.Plannings = Plannings;
    }

    public Collection<Activite> getActivites() {
        return Activites;
    }

    public void setActivites(Collection<Activite> Activites) {
        this.Activites = Activites;
    }
@实体
@XmlRootElement
公共类Groupe实现了可序列化{
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
@列(name=“GROUPE\u ID”)
私有int-Id;
私有字符串名称;
@OneToMany(cascade=CascadeType.ALL,mappedBy=“Groupe”)
@JoinColumn(name=“PLANNING\u ID”)
私人收藏计划;
@许多
@JoinTable(name=“GroupeActivite”,
joinColumns=@JoinColumn(name=“GROUPE\u ID”,referencedColumnName=“GROUPE\u ID”),
inverseJoinColumns=@JoinColumn(name=“ACTIVITE\u ID”,referencedColumnName=“ACTIVITE\u ID”))
私人收藏活动;
公共组(){
}
公共组(字符串名称、收集计划、收集活动){
这个.Nom=Nom;
这个。规划=规划;
this.Activites=Activites;
}
公共int getId(){
返回Id;
}
公共无效集合Id(内部Id){
这个.Id=Id;
}
公共字符串getNom(){
返回名称;
}
公共无效集合名(字符串名){
这个.Nom=Nom;
}
公共收集计划{
回归规划;
}
公共空间设置规划(收集规划){
这个。规划=规划;
}
公共集合getActivites(){
返回活动;
}
公共无效集合活动(集合活动){
this.Activites=Activites;
}
规划:

    @Entity
@XmlRootElement
public class Planning implements Serializable {
    @Id
    @GeneratedValue(strategy= GenerationType.AUTO)
    @Column(name = "PLANNING_ID")
    private int Id;

    @Column(name="DATE_EVENEMENT")
    @Temporal(TemporalType.TIMESTAMP)
    private Date dateEvenement;

    private EnumTypePlanning Type; 

    @ManyToMany
    @JoinTable(name="ActivitePlanning", 
            joinColumns=@JoinColumn(name="PLANNING_ID", referencedColumnName="PLANNING_ID"),
            inverseJoinColumns=@JoinColumn(name="ACTIVITE_ID", referencedColumnName="ACTIVITE_ID"))
    private Collection<Activite> Activites;

    @ManyToOne(cascade = CascadeType.ALL) 
    @JoinColumn(name="GROUPE_ID", insertable = false, updatable = false)
    private Groupe Groupe;

    @ManyToMany
    @JoinTable(name="UtilisateurPlanning", 
            joinColumns=@JoinColumn(name="PLANNING_ID", referencedColumnName="PLANNING_ID"),
            inverseJoinColumns=@JoinColumn(name="UTILISATEUR_ID", referencedColumnName="UTILISATEUR_ID"))
    private Collection<Utilisateur> Moniteurs;

    public Planning(){

    }

    public Planning(Date dateEvenement, EnumTypePlanning Type, Collection<Activite> Activite, Groupe Groupe){
        this.dateEvenement = dateEvenement;
        this.Type=Type;
        this.Activites=Activite;
        this.Groupe=Groupe;

    }

    public int getId() {
        return Id;
    }

    public void setId(int Id) {
        this.Id = Id;
    }

    public Date getDateEvenement() {
        return dateEvenement;
    }

    public void setDateEvenement(Date dateEvenement) {
        this.dateEvenement = dateEvenement;
    }

    public EnumTypePlanning getType() {
        return Type;
    }

    public void setType(EnumTypePlanning Type) {
        this.Type = Type;
    }

    public Collection<Activite> getActivites() {
        return Activites;
    }

    public void setActivites(Collection<Activite> Activites) {
        this.Activites = Activites;
    }

    public Groupe getGroupe() {
        return Groupe;
    }

    public void setGroupe(Groupe Groupe) {
        this.Groupe = Groupe;
    }



    public Collection<Utilisateur> getMoniteurs() {
        return Moniteurs;
    }

    public void setMoniteurs(Collection<Utilisateur> Moniteurs) {
        this.Moniteurs = Moniteurs;
    }
@实体
@XmlRootElement
公共类规划实现了可序列化{
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
@列(name=“PLANNING\u ID”)
私有int-Id;
@列(name=“DATE\u evement”)
@时态(TemporalType.TIMESTAMP)
私人约会;
私人计划型;
@许多
@JoinTable(name=“ActivitePlanning”,
joinColumns=@JoinColumn(name=“PLANNING\u ID”,referencedColumnName=“PLANNING\u ID”),
inverseJoinColumns=@JoinColumn(name=“ACTIVITE\u ID”,referencedColumnName=“ACTIVITE\u ID”))
私人收藏活动;
@多通(级联=级联类型.ALL)
@JoinColumn(name=“GROUPE\u ID”,insertable=false,updateable=false)
私人集团;
@许多
@JoinTable(name=“UsilisaturPlanning”,
joinColumns=@JoinColumn(name=“PLANNING\u ID”,referencedColumnName=“PLANNING\u ID”),
inverseJoinColumns=@JoinColumn(name=“usiliateur\u ID”,referencedColumnName=“usiliateur\u ID”))
私人收藏监督员;
公共规划(){
}
公共计划(日期-日期-活动、枚举类型计划类型、收集活动、分组){
this.DateEvenment=DateEvenment;
this.Type=Type;
this.Activites=Activite;
this.Groupe=Groupe;
}
公共int getId(){
返回Id;
}
公共无效集合Id(内部Id){
这个.Id=Id;
}
公共日期getDateEvenment(){
返回日期晚上;
}
公共作废设置日期晚上(日期晚上){
this.DateEvenment=DateEvenment;
}
公共枚举类型规划getType(){
返回类型;
}
公共void集合类型(EnumTypePlanning类型){
this.Type=Type;
}
公共集合getActivites(){
返回活动;
}
公共无效集合活动(集合活动){
this.Activites=Activites;
}
公共组getGroupe(){
返回组;
}
公共void setGroupe(Groupe-Groupe){
this.Groupe=Groupe;
}
公共集合getMoniteurs(){
返回监视器;
}
公共无效集合监视器(集合监视器){
这个.Moniteurs=Moniteurs;
}
GroupeMapper:

public class GroupeMapper extends AbstractFacade  implements IGroupeMapper{

   @PersistenceContext(unitName = "EJPlanningRestPU")
    private EntityManager em;
    private List<Groupe> list;

    public GroupeMapper() {
        super(Groupe.class);
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("EJPlanningRestPU");
        em = emf.createEntityManager();       }

    @Override
    protected EntityManager getEntityManager() {
        return em;
    }

    public void getAll() {
    super.findAll();
    }
public class PlanningMapper extends AbstractFacade  implements IPlanningMapper{


    @PersistenceContext(unitName = "EJPlanningRestPU")
    private EntityManager em;
    private List<Planning> list;

    public PlanningMapper() {
        super(Planning.class);
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("EJPlanningRestPU");
        em = emf.createEntityManager();       }

    @Override
    protected EntityManager getEntityManager() {
        return em;
    }
    public void getAll() {
    super.findAll();
    }
公共类GroupeMapper扩展了AbstractFacade,实现了IGroupeMapper{
@PersistenceContext(unitName=“EJPlanningRestPU”)
私人实体管理者;
私人名单;
公共组映射(){
超级(组级);
EntityManagerFactory emf=Persistence.createEntityManagerFactory(“EJPlanningRestPU”);
em=emf.createEntityManager();}
@凌驾
受保护的EntityManager getEntityManager(){
返回em;
}
public void getAll(){
super.findAll();
}
规划制图器:

public class GroupeMapper extends AbstractFacade  implements IGroupeMapper{

   @PersistenceContext(unitName = "EJPlanningRestPU")
    private EntityManager em;
    private List<Groupe> list;

    public GroupeMapper() {
        super(Groupe.class);
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("EJPlanningRestPU");
        em = emf.createEntityManager();       }

    @Override
    protected EntityManager getEntityManager() {
        return em;
    }

    public void getAll() {
    super.findAll();
    }
public class PlanningMapper extends AbstractFacade  implements IPlanningMapper{


    @PersistenceContext(unitName = "EJPlanningRestPU")
    private EntityManager em;
    private List<Planning> list;

    public PlanningMapper() {
        super(Planning.class);
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("EJPlanningRestPU");
        em = emf.createEntityManager();       }

    @Override
    protected EntityManager getEntityManager() {
        return em;
    }
    public void getAll() {
    super.findAll();
    }
公共类PlanningMapper扩展AbstractFacade实现IPlanningMapper{
@PersistenceContext(unitName=“EJPlanningRestPU”)
私人实体管理者;
私人名单;
公共规划制图器(){
超级(规划类);
EntityManagerFactory emf=Persistence.createEntityManagerFactory(“EJPlanningRestPU”);
em=emf.createEntityManager();}
@凌驾
受保护的EntityManager getEntityManager(){
返回em;
}
public void getAll(){
super.findAll();
}

我希望您能帮助我,我从一周开始就在搜索这个解决方案,找到解决方案对我来说非常重要。

您有JPA注释告诉它如何处理进出数据库的循环,但没有XML注释告诉它如何处理从XML.S转换java模型时的循环关系具体来说,一个计划有一个团队,而团队有很多计划。看你是最好的Thaaaaank你!@Chris我如何处理多对多关系?