spring hibernate 用注解生成表,怎么保存主从信息

问题描述

我用注解生成了3张表,DepartmentPersonnel还有一张中间表personnel_department我应该怎么保存信息呢?

解决方案

解决方案二:
@Entity@Table(name="department")publicclassDepartment{privateintid;privateStringdepartname;privateSet<Personnel>set=newHashSet<Personnel>();//privatePersonnelpersonnel;@Id@GeneratedValue@Column(name="ID")publicintgetId(){returnid;}publicvoidsetId(intid){this.id=id;}@Column(name="DEPARTNAME")publicStringgetDepartname(){returndepartname;}publicvoidsetDepartname(Stringdepartname){this.departname=departname;}@OneToMany@JoinTable(name="personnel_department",joinColumns={@JoinColumn(name="department_id",referencedColumnName="id")},inverseJoinColumns={@JoinColumn(name="personnel_id",referencedColumnName="id")})//name的值为要建的一张中间表,其中有表department名称加上“_”再加上表personnel名称组成,后边第一个name对应的是中间表列名,对应第一张表的id//第二个name也是中间表的另一个列名,对应第二张表的idpublicSet<Personnel>getSet(){returnset;}publicvoidsetSet(Set<Personnel>set){this.set=set;}}@Entity@Table(name="personnel")publicclassPersonnel{privateintid;privateStringname;//privateSet<Department>set=newHashSet<Department>();privateDepartmentdepartment;@Id@GeneratedValue@Column(name="ID")publicintgetId(){returnid;}publicvoidsetId(intid){this.id=id;}@Column(name="P_NAME",length=50)publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}@ManyToOne@JoinTable(name="personnel_department",joinColumns={@JoinColumn(name="personnel_id",referencedColumnName="id")},inverseJoinColumns={@JoinColumn(name="department_id",referencedColumnName="id")})publicDepartmentgetDepartment(){returndepartment;}publicvoidsetDepartment(Departmentdepartment){this.department=department;}}@RepositorypublicclassUserDaoImplimplementsUserDao{@ResourceprivateSessionFactorysessionFactory;publicvoidsetSessionFactory(SessionFactorysessionFactory){this.sessionFactory=sessionFactory;}privateSessionsession;publicSessiongetSession(){returnsession=this.sessionFactory.getCurrentSession();}@OverridepublicvoidaddUser(Useruser){}@OverridepublicvoidaddPersonnel(Personnelpersonnel){this.getSession().save(personnel);this.getSession().save(personnel.getDepartment());}@OverridepublicvoidaddDepartment(Departmentdepartment){this.sessionFactory.getCurrentSession().saveOrUpdate(department);}
解决方案三:

解决方案四:
如果有中间表的情况请使用ManyToMany的注解方式;参考以下用户与权限关联:User.java@ManyToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY)@JoinTable(name="tr_user_privilege",joinColumns=@JoinColumn(name="user_id"),inverseJoinColumns=@JoinColumn(name="privilege_id"))@OrderBy("privilege_idASC")privateList<Privilege>privileges;

时间: 2024-07-31 17:07:38

spring hibernate 用注解生成表,怎么保存主从信息的相关文章

初次整合hibernate和spring,不能自动生成表

问题描述 初次整合hibernate和spring,不能自动生成表 以下是主要代码: Users类: package com.merlin.beans; import org.hibernate.SessionFactory; public class Users { private String id; private String name; private String password; public String getName() { return name; } public vo

mysql-测试hibernate框架自动建表并保存数据,没报错,但数据只保存了一部分

问题描述 测试hibernate框架自动建表并保存数据,没报错,但数据只保存了一部分 解决方案 因为你去给Product这个对象创建三个实例,pro.pro2.pro3,对吧,然后你不停的给pro去赋值(pro.setName()),最后pro的最后一个值把前两个覆盖掉了,所以只添加了一个棉花糖.正确的方式是要给每个,你把第29行改成pro2.setName():30行pro2.setDir():33行pro3.setName():34行pro3.setDir(),就万事大吉了,祝你成功! 解决

spring + hibernate全注解事务问题(牛人赐教)

问题描述 spring.xml<beanid="sessionFactory"class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"><propertyname="dataSource"><refbean="dataSource"/></property><prop

hibernate spring-hibernate hbm2ddl自动生成表时如何生成父类的属性

问题描述 hibernate hbm2ddl自动生成表时如何生成父类的属性 子类Master 父类BaseVo 属性 /**创建时间/ public Date TCreateTime; /**创建人/ public String CCreateCde; Master extends BaseVo 利用hibernate hbm2ddl 自动创建表时如何让Master对应的表生成字段 TCreateTime和CCreateCde

hibernate配置-使用注解生成的uuid.hex 调用save()保存对象不发语句也不报错

问题描述 使用注解生成的uuid.hex 调用save()保存对象不发语句也不报错 @Id @GenericGenerator(name=""systemUUID""strategy=""uuid"") @GeneratedValue(generator=""systemUUID"") @Column(name = ""ID"" unique =

hibernate注解建表问题

问题描述 学习hibernate注解建表的时候出现的问题packagedemo.annotations.entity;importjavax.persistence.Entity;importjavax.persistence.GeneratedValue;importjavax.persistence.GenerationType;importjavax.persistence.Id;importjavax.persistence.Table;@Entitypublicclassweapon{

hibernate主键生成策略-为什么我的程序只有native方式生效(注解)

问题描述 hibernate主键生成策略-为什么我的程序只有native方式生效(注解) 我想采用uuid主键策略,但是多次各种尝试都不成功.我是通过往数据库插入数据测试的.重点是使用native能正常插入数据,而使用uuid就不行,主要原因是整个程序也不报错,就是运行了,看起来就像是跳过执行插入语句一样,实际上是执行到了插入方法的,也没有堆栈信息什么的可参考.代码如下: @Id @GeneratedValue (generator = "paymentableGenerator" )

spring hibernate 动态数据源 同步所有库的表结构问题

问题描述 spring hibernate 动态数据源 同步所有库的表结构问题 采取spring + hibernate 组成动态多数据源(每个库的表结构相同). 现程序升级需要对数据库表结构进行更改,将hibernate 的hibernate.hbm2ddl.auto 配置为update,结果只能修改defaultTargetDataSource 所连接的一个库. 求有可以使hibernate.hbm2ddl.auto 自动更新所有的库解决方案. 补充:是一个sessionFactory(or

hibernate注解多对多级联保存怎么解

问题描述 hibernate注解多对多级联保存怎么解 @ManyToMany(mappedBy=""sysUsers""cascade={CascadeType.PERSISTCascadeType.MERGE}) private Set<SysDept> sysDept = new HashSet<SysDept>(0); //部门 @ManyToMany( cascade={CascadeType.PERSISTCascadeType.M