首页 / HIBERNATE / org.springframework.dao.InvalidDataAccessApiUsageException: detached entity passed to persist: sys.entity.Role; nested exception is org.hibernate.PersistentObjectException: 的解决方案
org.springframework.dao.InvalidDataAccessApiUsageException: detached entity passed to persist: sys.entity.Role; nested exception is org.hibernate.PersistentObjectException: 的解决方案
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了org.springframework.dao.InvalidDataAccessApiUsageException: detached entity passed to persist: sys.entity.Role; nested exception is org.hibernate.PersistentObjectException: 的解决方案,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3174字,纯文字阅读大概需要5分钟。
内容图文
2、错误原因。
在多对多保存测试的过程中,常常会出现以上错误信息,出现错误信息的原因是id值没有传进去,需要手动赋值。
如User和Role两个类是多对多关系,Role是维护端,User是维护端,具体代码:
package sys.entity; import java.io.Serializable; import java.util.HashSet; import java.util.Set; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.ManyToMany; import javax.persistence.Table; @Table(name="a_role") @Entity public class Role implements Serializable{ private Integer id; private String roleName; private Set<User>users=new HashSet<User>(); @GeneratedValue @Id public Integer getId() { return id; } public void setId(Integer id) { this.id = id==null?null:id; } public String getRoleName() { return roleName; } public void setRoleName(String roleName) { this.roleName = roleName; } @ManyToMany(mappedBy="roles") public Set<User> getUsers() { return users; } public void setUsers(Set<User> users) { this.users = users; } }
package sys.entity; import java.io.Serializable; import java.util.HashSet; import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; import javax.persistence.Table; import sys.util.Constant; @Table(name="a_user") @Entity public class User implements Serializable{ private Integer id; private String username;//用户名 private String password;//密码 private Set<Role>roles=new HashSet<Role>(); @GeneratedValue(strategy=GenerationType.IDENTITY) @Id public Integer getId() { return id; } public void setId(Integer id) { this.id = id==null?null:id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } @Column(length=64) public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @JoinTable(name="a_user_role",joinColumns={@JoinColumn(name="userId",referencedColumnName="id")}, inverseJoinColumns={@JoinColumn(name="roleId",referencedColumnName="id")}) @ManyToMany(cascade={CascadeType.PERSIST,CascadeType.MERGE},fetch=FetchType.EAGER) public Set<Role> getRoles() { return roles; } public void setRoles(Set<Role> roles) { this.roles = roles; } }
3、测试:
@Test public void test6() { // 1、级联保存 Set<Role>roles=new HashSet<Role>(); Set<User>users=new HashSet<User>(); Role role=roleService.getRole(1); role.setUsers(users); roles.add(role); User user=new User(); //user.setId(-1); user.setUsername("李彤"); user.setPassword("1144"); user.setRoles(roles); users.add(user); userService.save(user); }
一测试就会出现以上错误!
4、解决方法。
解决的方法是设置一个Id值,任意设,如
user.setId(-1);
org.springframework.dao.InvalidDataAccessApiUsageException: detached entity passed to persist: sys.entity.Role; nested exception is org.hibernate.PersistentObjectException: 的解决方案
标签:
本文系统来源:http://www.cnblogs.com/hzhh123/p/5389333.html
内容总结
以上是互联网集市为您收集整理的org.springframework.dao.InvalidDataAccessApiUsageException: detached entity passed to persist: sys.entity.Role; nested exception is org.hibernate.PersistentObjectException: 的解决方案全部内容,希望文章能够帮你解决org.springframework.dao.InvalidDataAccessApiUsageException: detached entity passed to persist: sys.entity.Role; nested exception is org.hibernate.PersistentObjectException: 的解决方案所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。