找不到类org.hibernate.proxy.pojo.javassist.Javassist的序列化程序?

编程入门 行业动态 更新时间:2024-10-23 01:33:54
本文介绍了找不到类org.hibernate.proxy.pojo.javassist.Javassist的序列化程序?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在处理 SpringMVC , Hibernate & JSON 但我得到这个错误。

HTTP状态500 - 无法写入JSON:未找到类org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer的序列化程序和没有发现创建BeanSerializer的属性(以避免异常,禁用SerializationConfig.SerializationFeature.FAIL_ON_EMPTY_BEANS))

请检查我的实体在下面 $ $ p $ @Entity @Table(name =USERS) public class User { @Id @GeneratedValue @Column(name =USER_ID) private Integer userId; @Column(name =USER_FIRST_NAME) private String firstName; @Column(name =USER_LAST_NAME) private String lastName; @Column(name =USER_MIDDLE_NAME) private String middleName; @Column(name =USER_EMAIL_ID) private String emailId; @Column(name =USER_PHONE_NO)私人整数phoneNo; @Column(name =USER_PASSWORD)私人字符串密码; @Column(name =USER_CONF_PASSWORD) private String confPassword; @Transient 私有字符串标记; @Column(name =USER_CREATED_ON)私人日期createdOn; @OneToMany(fetch = FetchType.EAGER,cascade = CascadeType.ALL) @Fetch(value = FetchMode.SUBSELECT) @JoinTable(name =USER_ROLES,joinColumns = {@JoinColumn(name =USER_ID)},inverseJoinColumns = {@JoinColumn(name =ROLE_ID)}) private List< ActifioRoles> userRole = new ArrayList< ActifioRoles>(); $ b $ @ @ToToMany(fetch = FetchType.EAGER,cascade = CascadeType.ALL,mappedBy =userDetails) @Fetch(value = FetchMode.SUBSELECT)私人列表< com.actifio.domain.Address> userAddress = new ArrayList< com.actifio.domain.Address>(); @OneToOne(cascade = CascadeType.ALL)私人租户tenantDetails; public Integer getUserId(){ return userId; } public void setUserId(Integer userId){ this.userId = userId; } public String getFirstName(){ return firstName; } public void setFirstName(String firstName){ this.firstName = firstName; } public String getLastName(){ return lastName; } public void setLastName(String lastName){ this.lastName = lastName; } public String getEmailId(){ return emailId; } public void setEmailId(String emailId){ this.emailId = emailId; } public String getPassword(){ return password; } public void setPassword(String password){ this.password = password; } public String getConfPassword(){ return confPassword; } public void setConfPassword(String confPassword){ this.confPassword = confPassword; } public Date getCreatedOn(){ return createdOn; } public void setCreatedOn(Date createdOn){ this.createdOn = createdOn; } 公共列表< ActifioRoles> getUserRole(){ return userRole; } public void setUserRole(List< ActifioRoles> userRole){ this.userRole = userRole; } public String getMiddleName(){ return middleName; } public void setMiddleName(String middleName){ this.middleName = middleName; } public Integer getPhoneNo(){ return phoneNo; } public void setPhoneNo(Integer phoneNo){ this.phoneNo = phoneNo; } 公共列表< com.actifio.domain.Address> getUserAddress(){返回userAddress; } public void setUserAddress(List< com.actifio.domain.Address> userAddress){ this.userAddress = userAddress; } public Tenant getTenantDetails(){ return tenantDetails; } public void setTenantDetails(Tenant tenantDetails){ this.tenantDetails = tenantDetails; } public String getToken(){ return token; } public void setToken(String token){ this.token = token; } }

我该如何解决这个问题?

解决方案

我有一个类似的问题,通过hibernate代理对象进行延迟加载。通过注释具有延迟加载私有属性的类来解决它:

@JsonIgnoreProperties({hibernateLazyInitializer,handler} )

我假设您可以在代理对象上添加属性,将JSON序列化分解为该注释。

问题在于实体被加载并且在完全加载之前发生序列化。

Hibernate.initialize(<你的getter方法>);

I am working on SpringMVC, Hibernate & JSON but I am getting this error.

HTTP Status 500 - Could not write JSON: No serializer found for class org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationConfig.SerializationFeature.FAIL_ON_EMPTY_BEANS) )

Please check my Entity below

@Entity @Table(name="USERS") public class User { @Id @GeneratedValue @Column(name="USER_ID") private Integer userId; @Column(name="USER_FIRST_NAME") private String firstName; @Column(name="USER_LAST_NAME") private String lastName; @Column(name="USER_MIDDLE_NAME") private String middleName; @Column(name="USER_EMAIL_ID") private String emailId; @Column(name="USER_PHONE_NO") private Integer phoneNo; @Column(name="USER_PASSWORD") private String password; @Column(name="USER_CONF_PASSWORD") private String confPassword; @Transient private String token; @Column(name="USER_CREATED_ON") private Date createdOn; @OneToMany(fetch=FetchType.EAGER,cascade=CascadeType.ALL) @Fetch(value = FetchMode.SUBSELECT) @JoinTable(name = "USER_ROLES", joinColumns = { @JoinColumn(name = "USER_ID") }, inverseJoinColumns = { @JoinColumn(name = "ROLE_ID") }) private List<ActifioRoles> userRole = new ArrayList<ActifioRoles>(); @OneToMany(fetch=FetchType.EAGER,cascade=CascadeType.ALL,mappedBy="userDetails") @Fetch(value = FetchMode.SUBSELECT) private List<com.actifio.domain.Address> userAddress = new ArrayList<com.actifio.domain.Address>(); @OneToOne(cascade=CascadeType.ALL) private Tenant tenantDetails; public Integer getUserId() { return userId; } public void setUserId(Integer userId) { this.userId = userId; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public String getEmailId() { return emailId; } public void setEmailId(String emailId) { this.emailId = emailId; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getConfPassword() { return confPassword; } public void setConfPassword(String confPassword) { this.confPassword = confPassword; } public Date getCreatedOn() { return createdOn; } public void setCreatedOn(Date createdOn) { this.createdOn = createdOn; } public List<ActifioRoles> getUserRole() { return userRole; } public void setUserRole(List<ActifioRoles> userRole) { this.userRole = userRole; } public String getMiddleName() { return middleName; } public void setMiddleName(String middleName) { this.middleName = middleName; } public Integer getPhoneNo() { return phoneNo; } public void setPhoneNo(Integer phoneNo) { this.phoneNo = phoneNo; } public List<com.actifio.domain.Address> getUserAddress() { return userAddress; } public void setUserAddress(List<com.actifio.domain.Address> userAddress) { this.userAddress = userAddress; } public Tenant getTenantDetails() { return tenantDetails; } public void setTenantDetails(Tenant tenantDetails) { this.tenantDetails = tenantDetails; } public String getToken() { return token; } public void setToken(String token) { this.token = token; } }

How can I Solve this?

解决方案

I had a similar problem with lazy loading via the hibernate proxy object. Got around it by annotating the class having lazy loaded private properties with:

@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})

I assume you can add the properties on your proxy object that breaks the JSON serialization to that annotation.

The problem is that entities are loaded lazily and serialization happens before they get loaded fully.

Hibernate.initialize(<your getter method>);

更多推荐

找不到类org.hibernate.proxy.pojo.javassist.Javassist的序列化程序?

本文发布于:2023-10-31 06:23:49,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1545280.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:找不到   序列化   程序   hibernate   org

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!