Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.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
Java 休眠代理错误-Gson_Java_Hibernate_Rest_Gson - Fatal编程技术网

Java 休眠代理错误-Gson

Java 休眠代理错误-Gson,java,hibernate,rest,gson,Java,Hibernate,Rest,Gson,我使用hibernate在Java中构建RESTfulWeb服务(CRUD)。 问题是,当我返回某个具有某种关系的表中的数据(GET)时,会出现以下错误: HTTP状态500-内部服务器错误 类型异常报告 消息java.lang.UnsupportedOperationException:试图序列化java.lang.Class:org.hibernate.proxy.HibernateProxy。忘记注册类型适配器 说明服务器遇到意外情况,无法满足请求 删除由hibernate在任意一侧(表)

我使用hibernate在Java中构建RESTfulWeb服务(CRUD)。 问题是,当我返回某个具有某种关系的表中的数据(GET)时,会出现以下错误:

HTTP状态500-内部服务器错误 类型异常报告 消息java.lang.UnsupportedOperationException:试图序列化java.lang.Class:org.hibernate.proxy.HibernateProxy。忘记注册类型适配器

说明服务器遇到意外情况,无法满足请求

删除由hibernate在任意一侧(表)创建的双向映射时,服务器将恢复正常操作。 我使用Gson库以JSON格式返回和接收我的请求。 有人知道怎么解决这个问题吗? 谢谢大家的帮助

以下是我的控制器代码的一部分:

 @GET
   @Path("getConvenio")
   @Produces(javax.ws.rs.core.MediaType.APPLICATION_JSON)
   public String getConvenioList() {
      Gson gson = new Gson();
      List<Tbconveniado> l = new ArrayList();
      try {
         l = new ArrayList(op.getConveniadoList());

      } catch (Exception ex) {
         ex.printStackTrace();
      }

      return gson.toJson(l);
   }

你能提供一个吗?看看这个答案:,希望能有所帮助。朋友尝试了这个解决方案,但没有成功。我创建了HibernateProxyTypeAdapter类,并在GET方法中执行以下操作:“GsonBuilder b=new GsonBuilder();b.registerTypeAdapterFactory(HibernateProxyTypeAdapter.FACTORY);Gson Gson=b.create();List l=new ArrayList();Try{l=new ArrayList(op.getConveniadoList());}Catch(异常示例){Ex.printStackTrace();}Return gson.toJson(l);“你能告诉我可能发生了什么吗?
public class ConvenioOperations {

   public void setConvenio(Tbconveniado tb) {
      Session s = HibernateUtil.getSessionFactory().openSession();
      Transaction tx = s.beginTransaction();
      s.saveOrUpdate(tb);
      tx.commit();
      s.close();

   }
   public List<Tbconveniado> getConveniadoList(){

      Session s = HibernateUtil.getSessionFactory().openSession();
      Transaction tx = s.beginTransaction();
       List<Tbconveniado> l = null;
      Query q = s.createQuery("from Tbconveniado c");
      l = q.list();
      tx.commit();
      s.close();
      return l;
   }

}
<hibernate-mapping>
    <class name="pojos.Tbconveniado" table="tbconveniado" catalog="sindicatodb" optimistic-lock="version" >
        <id name="idConveniado" type="int">
            <column name="idConveniado" />
            <generator class="assigned" />
        </id>
<!-- foreign key -->
        <many-to-one name="tbramo" class="pojos.Tbramo" fetch="select">
            <column name="ramo" not-null="true" />
        </many-to-one>
        <property name="nome" type="string">
            <column name="nome" length="100" />
        </property>
        <property name="dataConvenio" type="date">
            <column name="dataConvenio" length="10" />
        </property>
        <property name="dataLimite" type="date">
            <column name="dataLimite" length="10" />
        </property>
        <property name="endereco" type="string">
            <column name="endereco" length="100" />
        </property>
        <property name="bairro" type="string">
            <column name="bairro" length="100" />
        </property>
        <property name="cep" type="string">
            <column name="cep" length="20" />
        </property>
        <property name="telefone" type="string">
            <column name="telefone" length="20" />
        </property>
        <property name="cnpj" type="string">
            <column name="cnpj" length="15" />
        </property>
        <property name="cidade" type="string">
            <column name="cidade" length="100" />
        </property>
        <property name="status" type="java.lang.Integer">
            <column name="status" />
        </property>
        <property name="email" type="string">
            <column name="email" length="100" />
        </property>
    </class>
</hibernate-mapping>
public class Tbconveniado  implements java.io.Serializable {

     private int idConveniado;
     private Tbramo tbramo;
     private String nome;
     private Date dataConvenio;
     private Date dataLimite;
     private String endereco;
     private String bairro;
     private String cep;
     private String telefone;
     private String cnpj;
     private String cidade;
     private Integer status;
     private String email;

    public Tbconveniado() {
    }
    public Tbconveniado(int idConveniado, Tbramo tbramo) {
        this.idConveniado = idConveniado;
        this.tbramo = tbramo;
    }
    public Tbconveniado(int idConveniado, Tbramo tbramo, String nome, Date dataConvenio, Date dataLimite, String endereco, String bairro, String cep, String telefone, String cnpj, String cidade, Integer status, String email) {
       this.idConveniado = idConveniado;
       this.tbramo = tbramo;
       this.nome = nome;
       this.dataConvenio = dataConvenio;
       this.dataLimite = dataLimite;
       this.endereco = endereco;
       this.bairro = bairro;
       this.cep = cep;
       this.telefone = telefone;
       this.cnpj = cnpj;
       this.cidade = cidade;
       this.status = status;
       this.email = email;
    }

    public int getIdConveniado() {
        return this.idConveniado;
    }

    public void setIdConveniado(int idConveniado) {
        this.idConveniado = idConveniado;
    }
    public Tbramo getTbramo() {
        return this.tbramo;
    }

    public void setTbramo(Tbramo tbramo) {
        this.tbramo = tbramo;
    }
    public String getNome() {
        return this.nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }
    public Date getDataConvenio() {
        return this.dataConvenio;
    }

    public void setDataConvenio(Date dataConvenio) {
        this.dataConvenio = dataConvenio;
    }
    public Date getDataLimite() {
        return this.dataLimite;
    }

    public void setDataLimite(Date dataLimite) {
        this.dataLimite = dataLimite;
    }
    public String getEndereco() {
        return this.endereco;
    }

    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }
    public String getBairro() {
        return this.bairro;
    }

    public void setBairro(String bairro) {
        this.bairro = bairro;
    }
    public String getCep() {
        return this.cep;
    }

    public void setCep(String cep) {
        this.cep = cep;
    }
    public String getTelefone() {
        return this.telefone;
    }

    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }
    public String getCnpj() {
        return this.cnpj;
    }

    public void setCnpj(String cnpj) {
        this.cnpj = cnpj;
    }
    public String getCidade() {
        return this.cidade;
    }

    public void setCidade(String cidade) {
        this.cidade = cidade;
    }
    public Integer getStatus() {
        return this.status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }
    public String getEmail() {
        return this.email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

}