栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Hibernate-无法延迟初始化角色集合:beans.Language。Patients,无法初始化代理-没有会话

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Hibernate-无法延迟初始化角色集合:beans.Language。Patients,无法初始化代理-没有会话

您的json转换器尝试序列化整个实体,该实体包含使用每种语言的所有患者的列表。据我了解,json中的患者列表是不期望的。因此,您有三种选择(订购时我会考虑它们):

  • 在“语言”实体中删除对患者的映射。您需要从语言实体获得患者的准入吗?如果没有,请删除此映射。
  • 创建语言DTO,然后在退出tx层之前在其中传输数据。这样,无论谁调用该服务,都将永远不会收到LazyInitException。毫不奇怪:DTO字段总是设置得很热情。
  • 配置您的json转换器以不序列化患者字段。您尚未说明正在使用哪个json库。其中一些为您提供注释,以忽略某些字段(
    @JsonIgnore
    例如对于Jackson),其他则需要Java配置。

要应用第一个解决方案,请按以下方式更新这些文件:

Language.hbm.xml

<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><!-- Generated Sep 14, 2016 4:33:23 PM by Hibernate Tools 4.3.1 --><hibernate-mapping>    <class name="beans.Language" table="language" catalog="myglukose" optimistic-lock="version">        <id name="idlanguage" type="java.lang.Integer"> <column name="idlanguage" /> <generator  />        </id>        <property name="language" type="string"> <column name="language" length="45" not-null="true" />        </property>    </class></hibernate-mapping>

语言.java

public class Language  implements java.io.Serializable {    private Integer idlanguage;    private String language;    protected Language() {    }    public Language(String language) {        this.language = language;    }    public Integer getIdlanguage() {        return this.idlanguage;    }    protected void setIdlanguage(Integer idlanguage) {        this.idlanguage = idlanguage;    }    public String getLanguage() {        return this.language;    }    public void setLanguage(String language) {        this.language = language;    }}

我已经将no-
arg构造函数和

setId
方法更新为
protected
。您甚至可以将它们更新为
private
:只有hibernate状态才能使用它们(并且它可以使用私有字段/方法)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/435977.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号