hibernate 视图配置多对多 中间表有其他的字段的配置方法 怎么插入数据

Hibernate 多对多 中间表含有其他字段 注解方式实现
两个实体类:Teacher.class Student.class 中间表包含了一个额外字段:score
Teacher.calss
Student.class
teacher_id
student_id
解决办法:
按照传统的多对多注解实现,中间表是以自身id为默认主键,另外包含了两个实体类的id,共3个字段,不能添加额外的字段。
解决办法是将ManyToMany 分解成两个OneToMany。
解决过程:
知道这种方法肯定没错,就又试了几次,终于成功了。
1. AbstractEntity.java
package com.cc.
import java.io.S
public abstract class AbstractEntity implements Persistable {
public abstract Serializable getInternalId();
public boolean equals(Object o) {
if (o == null)
if (!o.getClass().getName().equals(this.getClass().getName()))
return ((Persistable)o).getInternalId().equals(this.getInternalId());
public int hashCode() {
return this.getInternalId().hashCode();
2.Teacher.java
package com.
import java.io.S
import java.util.D
import java.util.S
import javax.persistence.CascadeT
import javax.persistence.C
import javax.persistence.E
import javax.persistence.FetchT
import javax.persistence.GeneratedV
import javax.persistence.GenerationT
import javax.persistence.Id;
import javax.persistence.JoinC
import javax.persistence.JoinT
import javax.persistence.ManyToM
import javax.persistence.OneToM
import javax.persistence.OrderBy;
import javax.persistence.SequenceG
import javax.persistence.T
import javax.persistence.T
@Table(name = teacher)
public class Teacher extends AbstractEntity{
private static final long serialVersionUID = 2498751L;
private String
private Set teacherS
@GeneratedValue(strategy = GenerationType.AUTO)
public Long getId() {
public void setId(Long id) {
@Column(name = name, length = 256)
public String getName() {
public void setName(String name) {
this.name =
@OneToMany(mappedBy = teacher)
public Set getTeacherStudents() {
return teacherS
public void setTeacherStudents(Set teacherStudents) {
this.teacherStudents = teacherS
@Transient
public Serializable getInternalId() {
3.Student.java
package com.
import java.io.S
import java.util.D
import java.util.HashS
import java.util.S
import javax.persistence.CascadeT
import javax.persistence.C
import javax.persistence.E
import javax.persistence.FetchT
import javax.persistence.GeneratedV
import javax.persistence.GenerationT
import javax.persistence.Id;
import javax.persistence.JoinC
import javax.persistence.JoinT
import javax.persistence.ManyToM
import javax.persistence.OneToM
import javax.persistence.OrderBy;
import javax.persistence.SequenceG
import javax.persistence.T
import javax.persistence.T
@Table(name = student)
public class Student extends AbstractEntity {
private static final long serialVersionUID = 0048430L;
private Long
private String
private Set teacherS
@GeneratedValue(strategy = GenerationType.AUTO)
public Long getId() {
public void setId(Long id) {
@Column(length = 256)
public String getName() {
public void setName(String name) {
this.name =
@OneToMany(mappedBy = student)
public Set TeacherStudents() {
return teacherS
public void setTeacherStudents(Set teacherStudents) {
this.teacherStudents = teacherS
@Transient
public Serializable getInternalId() {
4.TeacherStudent.java
package com.
import java.io.S
import java.util.D
import java.util.HashS
import java.util.S
import javax.persistence.CascadeT
import javax.persistence.C
import javax.persistence.E
import javax.persistence.FetchT
import javax.persistence.GeneratedV
import javax.persistence.GenerationT
import javax.persistence.Id;
import javax.persistence.JoinC
import javax.persistence.ManyToO
import javax.persistence.T
import javax.persistence.T
@Table(name = teacher_student)
public class TeacherStudent extends AbstractEntity {
private static final long serialVersionUID = 7846251L;
private Long
private Teacher
private Student
@Column(name = id, nullable = false)
@GeneratedValue(strategy = GenerationType.AUTO)
public Long getId() {
public void setId(Long id) {
@ManyToOne
@JoinColumn(name = teacher_id)
public Teacher getTeacher() {
public void setTeacher(Teacher teacher) {
this.teacher =
@ManyToOne
@JoinColumn(name = student_id)
public Student getStudent() {
public void setStudent(Student student) {
this.student =
@Column(name=score)
public Integer getScore() {
public void setScore(Integer score) {
this.score =
@Transient
public Serializable getInternalId() {
// TODO Auto-generated method stub
5.TeacherDaoImpl.java
添加一个teacher-student 关系:
public boolean addStudentScore(Long teacherId,Long studentId,Integer score) {
// TODO Auto-generated method stub
Student student = (Student) studentDao.findById(studentId);
Session session = this.getSession();
Transaction tx =
tx = session.beginTransaction();
Teacher teacher = (Teacher) session.get(
getEntityClass(), teacherId);
if (teacher != null && student != null) {
//new TeacherStudent
TeacherStudent ts = new TeacherStudent();
ts.setTeacher(teacher);
ts.setStudent(student);
ts.setScore(score);
session.save(ts);
session.flush();
tx.commit();
} catch (Exception e) {
if (tx != null)
tx.rollback();
} finally {
session.close();
删除一个teacher-student 关系:
public boolean removeStudentScore(Long teacherId,Long studentId) {
// TODO Auto-generated method stub
Student student = (Student) studentDao.findById(studentId);
Session session = this.getSession();
Transaction tx =
tx = session.beginTransaction();
Teacher teacher = (Teacher) session.get(
getEntityClass(), teacherId);
Set teacherStudents =
if (teacher != null && student != null) {
teacherStudents = teacher.getTeacherStudents();
if (teacherStudents.size()&0){
for(TeacherStudent teacherStudent:teacherStudents){
if(teacherStudent.getStudent().getId().equals(studentId) && teacherStudent.getTeacher().getId().equals(teacherId)){
session.delete(teacherStudent);
session.flush();
tx.commit();
} catch (Exception e) {
if (tx != null)
tx.rollback();
} finally {
session.close();5045人阅读
Hibernate(7)
本示例主要以学生(T_Student)和课程(T_Course)之间的多对多关系,中间表Score(分数),学生表和课程表是多对多关系,另外为他们的关系添加额外的字段---分数:
T_Student类如下:
import java.util.HashM
import java.util.HashS
import java.util.M
import java.util.S
import javax.persistence.E
import javax.persistence.GeneratedV
import javax.persistence.Id;
import javax.persistence.JoinC
import javax.persistence.JoinT
import javax.persistence.ManyToM
import javax.persistence.MapK
public class T_Student {
&private int&
&private S
&private Map&String,T_Crouse&& course=new HashMap&String,T_Crouse&();
& * private Set&T_Crouse&& course=new HashSet&T_Crouse&();
&@GeneratedValue
&public int getId() {
&public void setId(int id) {
&&this.id =
&public String getName() {
&public void setName(String name) {
&&this.name =
& * @ManyToMany
&@JoinTable(
&&&name=&score&,
&@ManyToMany
&@MapKey(name=&id&)
&@JoinTable(
&&&name=&score&,
&public Map&String, T_Crouse& getCourse() {
&public void setCourse(Map&String, T_Crouse& course) {
&&this.course =
T_course类:
import javax.persistence.E
import javax.persistence.GeneratedV
import javax.persistence.Id;
public class T_Crouse {
&private int&
&private S
&@GeneratedValue
&public int getId() {
&public void setId(int id) {
&&this.id =
&public String getName() {
&public void setName(String name) {
&&this.name =
中间表Score也写成实体类:
import javax.persistence.E
import javax.persistence.GeneratedV
import javax.persistence.Id;
import javax.persistence.JoinC
import javax.persistence.ManyToO
@Table(name=&score&)
public class T_Score {
&private int&
&private int&
&private T_S
&private T_Crouse&
&@GeneratedValue
&public int getId() {
&public int getScrores() {
&public void setScrores(int scrores) {
&&this.scrores =
&public void setId(int id) {
&&this.id =
&@ManyToOne
&@JoinColumn(name=&student_id&)
&public T_Student getStudent() {
&public void setStudent(T_Student student) {
&&this.student =
&@ManyToOne
&@JoinColumn(name=&course_id&)
&public T_Crouse getCourse() {
&public void setCourse(T_Crouse course) {
&&this.course =
注意的是中间表中的导航关系manytomany& @JoinColumn(name=&course_id&);@JoinColumn(name=&course_id&)中声明的course_id,student_id和T_student表中声明的要一致,不然会产生其他的字段--再就是中间表的@Table(name=&score&)score名字和T_Student中的&@JoinTable(
name=&score&,要一样!!!
建立好之后就会生成中间表含有字段id,student_id,course_id,和score四个字段(然后hibernate生成的主键是(student_id,coure_id))虽然你在T_Score表中声明了自己的id。。。。这是值得注意的地方!
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:130228次
积分:1818
积分:1818
排名:千里之外
原创:42篇
转载:28篇
评论:14条
(2)(1)(7)(13)(4)(10)(5)(3)(12)(2)(1)(2)(3)(5)(3)(4)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'Hibernate多对多关系中间表有其他属性的配置方式_Linux编程_Linux公社-Linux系统门户网站
你好,游客
Hibernate多对多关系中间表有其他属性的配置方式
来源:Linux社区&
作者:gaolinwu
一、需求原因
在我做系统架构时遇到情况是这样:资源菜单实体类(Resource)和角色实体类(Role)是多对多关系,需要各个角色可以个性化自己的资源菜单顺序。
二、设计理念
多对多的关系拆分为两个一对多
三、具体配置
方式一:XML方式
public class Role implements Serializable {
&&&&&&&& /*ID*/
&&&&&&&& privateL
&&&&&&&& /*名称*/
&&&&&&&& privateS
&&&&&&&& /*与RoleResource的一对多关系*/
&&&&&&&& PrivateSet&RoleResource& roleResources= new HashSet&RoleResource&();
&&&&&&&& //get set
Resource实体
public class Resource implements Serializable {
&&&&&&&& /*ID*/
&&&&&&&& privateL
&&&&&&&& /*名称*/
&&&&&&&& privateS
&&&&&&&& /*与RoleResource的一对多关系*/
&&&&&&&& privateSet&RoleResource& roleResources = new HashSet&RoleResource&();
&&&&&&&& // getset
RoleResource辅助实体
public class RoleResource implements Serializable{
&&&&&&&& /*ID*/
&&&&&&&& privateL
&&&&&&&& /*与Role的多对一关系*/
&&&&&&&& privateR
&&&&&&&& /*与Resource的多对一关系*/
&&&&&&&& privateR
&&&&&&&& /*排序字段*/
&&&&&&&& privateI
&&&&&&&& // getset
Role.hbm.xml
&hibernate-mappingpackage="com.glw.domain"&
&&&&&&&& &classname="Role" table="glw_role"&
&&&&&&&&&&&&&&&&&& &idname="id" column="id"&
&&&&&&&&&&&&&&&&&&&&&&&&&&& &generatorclass="native" /&
&&&&&&&&&&&&&&&&&& &/id&
&&&&&&&&&&&&&&&&&& &propertyname="name" type="string" not-null="true"unique="true" length="50"/&
&&&&&&&&&&&&&&&&&& &!--roleResource,与RoleResource的一对多关系--&
&&&&&&&&&&&&&&&&&& &setname="roleResources" order-by="id ASC"inverse="true" lazy="false"&
&&&&&&&&&&&&&&&&&&&&&&&&&&& &keycolumn="roleId"/&
&&&&&&&&&&&&&&&&&&&&&&&&&&& &one-to-manyclass="RoleResource" /&
&&&&&&&&&&&&&&&&&& &/set&
&&&&&&&& &/class&
&/hibernate-mapping&
Resource.hbm.xml
&hibernate-mappingpackage="com.glw.domain"&
&&&&&&&& &classname="Resource" table="glw_resource"&
&&&&&&&&&&&&&&&&&& &idname="id" column="id"&
&&&&&&&&&&&&&&&&&&&&&&&&&&& &generatorclass="native" /&
&&&&&&&&&&&&&&&&&& &/id&
&&&&&&&&&&&&&&&&&& &propertyname="name" type="string" not-null="true"length="50"/&
&&&&&&&&&&&&&&&&&& &!--roleResources,与RoleResource的一对多关系--&
&&&&&&&&&&&&&&&&&& &setname="roleResources" order-by="id ASC"inverse="true" lazy="false"&
&&&&&&&&&&&&&&&&&&&&&&&&&&& &keycolumn="resourceId"/&
&&&&&&&&&&&&&&&&&&&&&&&&&&& &one-to-manyclass="RoleResource"/&
&&&&&&&&&&&&&&&&&& &/set&
&&&&&&&& &/class&
&/hibernate-mapping&
RoleResource.hbm.xml
&hibernate-mappingpackage="com.glw.domain"&
&&&&&&&& &classname="RoleResource" table="glw_role_resource"&
&&&&&&&&&&&&&&&&&& &idname="id" column="id"&
&&&&&&&&&&&&&&&&&&&&&&&&&&& &generatorclass="native" /&
&&&&&&&&&&&&&&&&&& &/id&
&&&&&&&&&&&&&&&&&& &propertyname="sort" type="integer" not-null="true" /&
&&&&&&&&&&&&&&&&&& &!--role,与Role的多对一关系--&
&&&&&&&&&&&&&&&&&& &many-to-onename="role" class="Role" column="roleId" /&
&&&&&&&&&&&&&&&&&& &!--resource,与Resource的多对一关系--&
&&&&&&&&&&&&&&&&&& &many-to-onename="resource" class="Resource"column="resourceId"/&
&&&&&&&& &/class&
&/hibernate-mapping&
Hibernate.cfg.xml中配置
&mappingresource="com/glw/domain/Role.hbm.xml"/&
&mappingresource="com/glw/domain/Resource.hbm.xml" /&
&mappingresource="com/glw/domain/RoleResource.hbm.xml" /&
方式二:Annotation方式
@Table(name="glw_role")
public class Role {
&&&&&&&& @Id
&&&&&&&& @GeneratedValue(strategy=GenerationType.TABLE)
&&&&&&&& privateL
&&&&&&&& @Column(length=50)
&&&&&&&& privateS
&&&&&&&& @OneToMany(mappedBy="role",cascade=CascadeType.ALL)
&&&&&&&& privateSet&RoleResource& roleResources = new HashSet&RoleResource&();
&&&&&&&& //get set
Resource实体
@Table(name="glw_resource")
public class Resource {
&&&&&&&& @Id
&&&&&&&& @GeneratedValue(strategy=GenerationType.TABLE)
&&&&&&&& privateL
&&&&&&&& @Column(length=50)
&&&&&&&& privateS
&&&&&&&& @OneToMany(mappedBy="resource",cascade=CascadeType.ALL)
&&&&&&&& privateSet&RoleResource& roleResources = new HashSet&RoleResource&();
&&&&&&&& // getset
RoleResource辅助实体
@Table(name="glw_role_resource")
public class RoleResource {
&&&&&&&& @Id
&&&&&&&& @GeneratedValue(strategy=GenerationType.TABLE)
&&&&&&&& privateL
&&&&&&&& @Column
&&&&&&&& privateI
&&&&&&&& @ManyToOne(cascade=CascadeType.ALL)
&&&&&&&& @JoinColumn(name="roleId",nullable=true)
&&&&&&&& privateR
&&&&&&&& @ManyToOne(cascade=CascadeType.ALL)
&&&&&&&& @JoinColumn(name="resourceId",nullable=true)
&&&&&&&& privateR
&&&&&&&& // getset
Hibernate.cfg.xml中配置
&mapping class="com.glw.domain.Role"/&
&mappingclass="com.glw.domain.Resource"/&
&mappingclass="com.glw.domain.RoleResource"/&
Xml和Annotation方式可任意选取一种,以上本人均测试通过。
相关资讯 & & &
& (01月17日)
& (08/07/:44)
& (06月18日)
& (08/26/:28)
& (04/20/:19)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款博客分类:
Hibernate多对多级联(中间表)添加
SysJuese.java和SysBumen.java是多对多关系。主动权在SysBumen.java,数据库中表结果如下:
sys_bumen结构--
id&&&&&& bumenmingcheng&& miaoshu&&&&& zhuangtai
sys_juese结构--
id&&&&&& juesemingcheng&&&& miaoshu&&&&& zhuangtai
中间表sys_bumenjuese结构--
bumen_id&&&&&&&& juese_id
目前sys_bumen中有一条记录--
1&&&&&&&&&&&&& 采购部&&&&&&&&&&& 。。。&&&&&&&& 0
现在想对sys_juese添加一条记录,同时在中间表sys_bumenjuese中也添加一条记录
==============================我是华丽的分割线=============================
SysBumen.java
package com.scm.
import java.util.HashS
import java.util.S
* SysBumen entity.
* @author MyEclipse Persistence Tools
public class SysBumen implements java.io.Serializable {
&&& // Fields
&&& private I
&&& private S
&&& private S
&&& private I
&&& private Set sysYuangongs = new HashSet(0);
&&& private Set sysJueses = new HashSet(0);
&&& // Constructors
&&& /** default constructor */
&&& public SysBumen() {
&&& }
&&& /** minimal constructor */
&&& public SysBumen(String bumenmingcheng) {
&&&&&& this.bumenmingcheng =
&&& }
&&& /** full constructor */
&&& public SysBumen(String bumenmingcheng, String miaoshu, Integer zhuangtai,
&&&&&&&&&& Set sysYuangongs, Set sysJueses) {
&&&&&& this.bumenmingcheng =
&&&&&& this.miaoshu =
&&&&&& this.zhuangtai =
&&&&&& this.sysYuangongs = sysY
&&&&&& this.sysJueses = sysJ
&&& }
&&& // Property accessors
&&& public Integer getId() {
&&&&&& return this.
&&& }
&&& public void setId(Integer id) {
&&&&&& this.id =
&&& }
&&& public String getBumenmingcheng() {
&&&&&& return this.
&&& }
&&& public void setBumenmingcheng(String bumenmingcheng) {
&&&&&& this.bumenmingcheng =
&&& }
&&& public String getMiaoshu() {
&&&&&& return this.
&&& }
&&& public void setMiaoshu(String miaoshu) {
&&&&&& this.miaoshu =
&&& }
&&& public Integer getZhuangtai() {
&&&&&& return this.
&&& }
&&& public void setZhuangtai(Integer zhuangtai) {
&&&&&& this.zhuangtai =
&&& }
&&& public Set getSysYuangongs() {
&&&&&& return this.sysY
&&& }
&&& public void setSysYuangongs(Set sysYuangongs) {
&&&&&& this.sysYuangongs = sysY
&&& }
&&& public Set getSysJueses() {
&&&&&& return this.sysJ
&&& }
&&& public void setSysJueses(Set sysJueses) {
&&&&&& this.sysJueses = sysJ
&&& }
}
SysBumen.hbm.xml
&?xml version="1.0" encoding="utf-8"?&
&!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"&
&!--
&&& Mapping file autogenerated by MyEclipse Persistence Tools
--&
&hibernate-mapping&
&&& &class name="com.scm.domain.SysBumen" table="sys_bumen" catalog="scm" lazy="false"&
&&&&&&& &id name="id" type="java.lang.Integer"&
&&&&&&&&&&& &column name="id" /&
&&&&&&&&&&& &generator class="native" /&
&&&&&&& &/id&
&&&&&&& &property name="bumenmingcheng" type="java.lang.String"&
&&&&&&&&&&& &column name="bumenmingcheng" length="50" not-null="true" /&
&&&&&&& &/property&
&&&&&&& &property name="miaoshu" type="java.lang.String"&
&&&&&&&&&&& &column name="miaoshu" length="1000" /&
&&&&&&& &/property&
&&&&&&& &property name="zhuangtai" type="java.lang.Integer"&
&&&&&&&&&&& &column name="zhuangtai" /&
&&&&&&& &/property&
&&&&&&& &set name="sysYuangongs" inverse="true"&
&&&&&&&&&&& &key&
&&&&&&&&&&&&&&& &column name="sys_id" /&
&&&&&&&&&&& &/key&
&&&&&&&&&&& &one-to-many class="com.scm.domain.SysYuangong" /&
&&&&&&& &/set&
&&&&&&& &!-- 关键是这里的inverse需要设成false,cascade设成关联的级别 --&
&&&&&&& &set name="sysJueses" inverse="false" table="sys_bumenjuese" catalog="scm" lazy="false" cascade="save-update,delete"&
&&&&&&&&&&& &key&
&&&&&&&&&&&&&&& &column name="bumen_id" not-null="true" /&
&&&&&&&&&&& &/key&
&&&&&&&&&&& &many-to-many entity-name="com.scm.domain.SysJuese"&
&&&&&&&&&&&&&&& &column name="sys_id" not-null="true" /&
&&&&&&&&&&& &/many-to-many&
&&&&&&& &/set&
&&& &/class&
&/hibernate-mapping&
SysJuese.java
package com.scm.
import java.util.HashS
import java.util.S
* SysJuese entity.
* @author MyEclipse Persistence Tools
public class SysJuese implements java.io.Serializable {
&&& // Fields
&&& private I
&&& private S
&&& private S
&&& private I
&&& private Set sysBumens = new HashSet(0);
&&& private Set sysYonghus = new HashSet(0);
&&& private Set sysQuanxians = new HashSet(0);
&&& // Constructors
&&& /** default constructor */
&&& public SysJuese() {
&&& }
&&& /** minimal constructor */
&&& public SysJuese(String juesemingcheng) {
&&&&&& this.juesemingcheng =
&&& }
&&& /** full constructor */
&&& public SysJuese(String juesemingcheng, String miaoshu, Integer zhuangtai,
&&&&&&&&&& Set sysBumens, Set sysYonghus, Set sysQuanxians) {
&&&&&& this.juesemingcheng =
&&&&&& this.miaoshu =
&&&&&& this.zhuangtai =
&&&&&& this.sysBumens = sysB
&&&&&& this.sysYonghus = sysY
&&&&&& this.sysQuanxians = sysQ
&&& }
&&& // Property accessors
&&& public Integer getId() {
&&&&&& return this.
&&& }
&&& public void setId(Integer id) {
&&&&&& this.id =
&&& }
&&& public String getJuesemingcheng() {
&&&&&& return this.
&&& }
&&& public void setJuesemingcheng(String juesemingcheng) {
&&&&&& this.juesemingcheng =
&&& }
&&& public String getMiaoshu() {
&&&&&& return this.
&&& }
&&& public void setMiaoshu(String miaoshu) {
&&&&&& this.miaoshu =
&&& }
&&& public Integer getZhuangtai() {
&&&&&& return this.
&&& }
&&& public void setZhuangtai(Integer zhuangtai) {
&&&&&& this.zhuangtai =
&&& }
&&& public Set getSysBumens() {
&&&&&& return this.sysB
&&& }
&&& public void setSysBumens(Set sysBumens) {
&&&&&& this.sysBumens = sysB
&&& }
&&& public Set getSysYonghus() {
&&&&&& return this.sysY
&&& }
&&& public void setSysYonghus(Set sysYonghus) {
&&&&&& this.sysYonghus = sysY
&&& }
&&& public Set getSysQuanxians() {
&&&&&& return this.sysQ
&&& }
&&& public void setSysQuanxians(Set sysQuanxians) {
&&&&&& this.sysQuanxians = sysQ
&&& }
SysJuese.hbm.xml
&?xml version="1.0" encoding="utf-8"?&
&!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"&
&!--
&&& Mapping file autogenerated by MyEclipse Persistence Tools
--&
&hibernate-mapping&
&&& &class name="com.scm.domain.SysJuese" table="sys_juese" catalog="scm"&
&&&&&&& &id name="id" type="java.lang.Integer"&
&&&&&&&&&&& &column name="id" /&
&&&&&&&&&&& &generator class="native" /&
&&&&&&& &/id&
&&&&&&& &property name="juesemingcheng" type="java.lang.String"&
&&&&&&&&&&& &column name="juesemingcheng" length="50" not-null="true" /&
&&&&&&& &/property&
&&&&&&& &property name="miaoshu" type="java.lang.String"&
&&&&&&&&&&& &column name="miaoshu" length="1000" /&
&&&&&&& &/property&
&&&&&&& &property name="zhuangtai" type="java.lang.Integer"&
&&&&&&&&&&& &column name="zhuangtai" /&
&&&&&&& &/property&
&&&&&&& &set name="sysBumens" table="sys_bumenjuese" catalog="scm" lazy="false"&
&&&&&&&&&&& &key&
&&&&&&&&&&&&&&& &column name="sys_id" not-null="true" /&
&&&&&&&&&&& &/key&
&&&&&&&&&&& &many-to-many entity-name="com.scm.domain.SysBumen"&
&&&&&&&&&&&&&&& &column name="bumen_id" not-null="true" /&
&&&&&&&&&&& &/many-to-many&
&&&&&&& &/set&
&&&&&&& &set name="sysYonghus" inverse="true"&
&&&&&&&&&&& &key&
&&&&&&&&&&&&&&& &column name="sys_id" /&
&&&&&&&&&&& &/key&
&&&&&&&&&&& &one-to-many class="com.scm.domain.SysYonghu" /&
&&&&&&& &/set&
&&&&&&& &set name="sysQuanxians" inverse="true" table="sys_juesequanxian" catalog="scm"&
&&&&&&&&&&& &key&
&&&&&&&&&&&&&&& &column name="jueseid" not-null="true" /&
&&&&&&&&&&& &/key&
&&&&&&&&&&& &many-to-many entity-name="com.scm.domain.SysQuanxian"&
&&&&&&&&&&&&&&& &column name="quanxianid" not-null="true" /&
&&&&&&&&&&& &/many-to-many&
&&&&&&& &/set&
&&& &/class&
&/hibernate-mapping&
=================================我也是华丽的分割线===================================
遇到的错误:
org.springframework.orm.hibernate3.HibernateSystemException: a different object with the same identifier value was already associated with the session:
在进行更新SysBumen设置Juese集合时,Juese集合每次需要new。使用Spring管理事务之后,如果更新对象中的Juese每次不新建,会出现session重复的问题。Hibernate不能同时更新两个拥有同一id的对象。
zhaoshijie
浏览: 1726820 次
来自: 北京
多谢,学习了
Dubbo项目实战: ...
写一个RefreshEvent 继承 ContextRefre ...
加一个标记变量,参考这篇文章,http://josh-pers ...
博主文中提到的 事务补偿 及 相关的事务管理器目前在githu ...

我要回帖

更多关于 hibernate 视图配置 的文章

 

随机推荐