当前位置: 首页 > 知识库问答 >
问题:

Hibernate懒惰启动器问题在glassfish jersy与codehus jacksonRest服务

尤夕
2023-03-14

我正在与codehus Jackson一起为json数据开发glashfish jersey rest服务。但是我得到了Hibernate lazy初始化异常,因为我为所有子类添加了lazy=false。但它给出了无限递归错误。因此,我在反向映射属性上添加了JsonIgnore。但它无法检测。我的配置如下。

<servlet>
    <servlet-name>Jersey REST Service</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>

    <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>com.koderzlab.lawman;org.codehaus.jackson.jaxrs</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

我的堆栈跟踪如下

at org.codehaus.jackson.map.ser.BeanSerializer.serializeFields(BeanSerializer.java:189)
    at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:142)
    at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:430)
    at org.codehaus.jackson.map.ser.BeanSerializer.serializeFields(BeanSerializer.java:175)
    at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:142)
    at org.codehaus.jackson.map.ser.ContainerSerializers$CollectionSerializer.serializeContents(ContainerSerializers.java:442)
    at org.codehaus.jackson.map.ser.ContainerSerializers$CollectionSerializer.serializeContents(ContainerSerializers.java:383)
    at org.codehaus.jackson.map.ser.ContainerSerializers$AsArraySerializer.serialize(ContainerSerializers.java:142)
    at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:430)
    at org.codehaus.jackson.map.ser.BeanSerializer.serializeFields(BeanSerializer.java:175)
    at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:142)
    at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:430)
    at org.codehaus.jackson.map.ser.BeanSerializer.serializeFields(BeanSerializer.java:175)
    at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:142)
    at org.codehaus.jackson.map.ser.ContainerSerializers$CollectionSerializer.serializeContents(ContainerSerializers.java:442)
    at org.codehaus.jackson.map.ser.ContainerSerializers$CollectionSerializer.serializeContents(ContainerSerializers.java:383)

共有2个答案

常自怡
2023-03-14

我刚刚添加了代码1.9。2个JAR现在可以识别@JsonBack引用。但是在每个pojo类上,我们需要添加
@JsonIgnoreProperties({“HibernateLazInitializer”,“handler”})

陆昊
2023-03-14

虽然您的Hibernate问题可能不会因此得到解决,但看起来您正在为Jackson类扫描错误的包名。

为杰克逊2。x、 通常与Jersey 2一起使用。x、 您需要在包com中进行扫描。fasterxml。杰克逊。jaxrs而不是org。科德豪斯。杰克逊。jaxrs

将您的web.xml中的部分更改为以下内容:

<init-param>
    <param-name>jersey.config.server.provider.packages</param-name>
    <param-value>com.koderzlab.lawman;com.fasterxml.jackson.jaxrs</param-value>
</init-param>

另见:

  • 泽西岛JAX-RS,Hibernate和Lazy初始化异常
  • Hibernateorg.hibernate.Lazy初始化异常:未能懒惰地初始化角色集合:
  • 在Hibernate和泽西岛中的异常
 类似资料:
  • 我的问题是:当我对父实体(合同)执行查询时,在子实体(ContractHeader)上应用过滤器并使用FetchType。LAZY,LAZY规则应用正确,但当我尝试访问子列表(ContractHeader)时,过滤器不会应用于子对象,所有子对象都加载到列表中。有人能帮我回答这个问题吗?过滤器应与fetchtype一起使用。懒惰? 有人成功地实施了这样的事情吗? Tks! 我拥有以下实体: 在调用查

  • 我使用的是Nifi 0.4.1版本。我写自定义代码转换CSV到avro格式。我已经创建了类文件(.java文件),并能够生成nar文件。将新创建的nar文件放置在lib目录中,并重新启动nifi服务器。 类文件没有任何错误或警告。 当检查nifi的状态(status-nifi.bat)时,它表示服务器可能已经崩溃或挂机。 任何帮助都很感激..

  • 我正在通过启用Java EE的Eclipse运行tomcat,每当我试图启动服务器时,就会出现以下错误,我无法运行任何servlet, 我的web.xml如下所示

  • 我在windows中启动Kafka服务器时遇到问题 命令\bin\windows\kafka服务器启动。球棒\配置\服务器。属性 错误消息: 该命令的语法不正确。错误:无法找到或加载主类文件\IBM\WebSphere 知道吗?

  • 我有一个问题,就是基于hasMany关系从数据库中获取数据并将其发送到Larave中的api。在下面的代码中,Laravel没有给我客户id=$id的产品。我不知道为什么,我不能在$query旁边发送$id。如果我把号码写在“我有很好的安全套,但我需要自动拿。 所有api代码 先谢谢你。

  • 这是一个相当做作的例子。另外,我知道flatten和concat将给出嵌套级别不同的序列。 我试图弄清楚为什么flatten似乎能打破这种懒惰,尽管我对Clojure.core代码的理解有限,但我认为并非如此。