本文介绍了如何序列化懒加载实体与杰克逊模块休眠?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我真的试图建立与angularjs一个应用程序,并springmvc.I有两个类省和自治区。

I`m trying to build an application with angularjs and springmvc.I have two classes Province and Comunidad. :

@Entity(name="Provincia")
@Table(name="T_PROVINCIA")
public class Provincia implements Serializable{


private String idProvincia;
private String nombre;
private Comunidad refComunidad;

public Provincia() {
}

@Id
@TableGenerator(name="provinciaGen",
                table="T_GENERATOR",
                pkColumnName="ID_GENERATOR",
                pkColumnValue="ID_PROVINCIA",
                valueColumnName="ID_VALUE")
@GeneratedValue(generator="provinciaGen",strategy=GenerationType.TABLE)
@Column(name="ID_PROVINCIA")
public String getIdProvincia() {
    return idProvincia;
}

@Column(name="NOMBRE")
public String getNombre() {
    return nombre;
}

@ManyToOne(targetEntity=Comunidad.class, fetch=FetchType.LAZY)
@JoinColumn(name="ID_COMUNIDAD")
public Comunidad getRefComunidad() {
    return refComunidad;
}
setters
.....
.....
}

@Entity(name="Comunidad")
@Table(name="T_COMUNIDAD")
public class Comunidad implements Serializable{

@Id
@TableGenerator(name="comunidadGen",
                table="T_GENERATOR",
                pkColumnName="ID_GENERATOR",
                pkColumnValue="ID_COMUNIDAD",
                valueColumnName="ID_VALUE")
@GeneratedValue(generator="comunidadGen",strategy=GenerationType.TABLE)
@Column(name="ID_COMUNIDAD")
private String idComunidad;

@Column(name="NOMBRE")
private String nombre;

@Column(name="SHORTNAME")
private String shortName;

public Comunidad() {
}

getters and setters
...............
}

在我的控制器:

@RequestMapping("/userlist.json")
public @ResponseBody List<Provincia> getUserList(){
    return this.provinciaService.loadAllProvincias();
}

和我得到这个错误:
    / *
    没有找到序列化器类org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer和结果
    没有发现的属性创建BeanSerializer(避免异常,禁用结果
    SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS))(通过参考链:
    的java.util.ArrayList [0] - > admin.domain.Provincia [refComunidad] - 下;
    admin.domain.Comunidad $$ EnhancerByCGLIB $$ 68ea9e6f [hibernateLazyInitializer])
    * /

And I get that error: /* No serializer found for class org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer and
no properties discovered to create BeanSerializer (to avoid exception, disable
SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS) ) (through reference chain: java.util.ArrayList[0]->admin.domain.Provincia["refComunidad"]-< admin.domain.Comunidad$$EnhancerByCGLIB$$68ea9e6f["hibernateLazyInitializer"]) */

我在关于杰克逊模块休眠github上读的是解决结果是不错的选择
问题:https://github.com/FasterXML/jackson-module-hibernate.
我包括在我的pom.xml杰克逊模块休眠依赖

I have read on github about jackson module hibernate is a good choice to solve the
problem : https://github.com/FasterXML/jackson-module-hibernate.I included the jackson module hibernate dependency in my pom.xml

    <dependency>
      <groupId>com.fasterxml.jackson.datatype</groupId>
      <artifactId>jackson-datatype-hibernate4</artifactId>
      <version>2.2.0</version>
</dependency>

但我不知道在哪里配置Hibernate4Module.Feature.FORCE_LAZY_LOADING,真正的。
我试图从页http://blog.pastelstudios.com/2012/03/12/spring-3-1-hibernate-4-jackson-module-hibernate/

但我得到了同样的错误。

but I obtain the same error.

有没有人谁可以帮我一个简单的例子吗?

Is there somebody who can help me with an easy example please?

推荐答案

您可以试试这个。它可以帮助我。

You can try this. It helps to me.

ObjectMapper mapper = new ObjectMapper();

Hibernate4Module hbm = new Hibernate4Module();
hbm.enable(Hibernate4Module.Feature.FORCE_LAZY_LOADING);

mapper.registerModule(hbm);
ObjectWriter w = mapper.writer();
String result = null;
try {
    result = w.writeValueAsString(o);
} catch (JsonProcessingException e) {
    e.printStackTrace();
}

这篇关于如何序列化懒加载实体与杰克逊模块休眠?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

05-27 04:18
查看更多