Hibernate如何持久化表中的外键字段 例如有一个sort表的外键username 对应于user表的主键username,生成持久化类后,字段username在Sort类的属性变成了一个User类型对象,请问这时应该如何持久化使表中的username字段插入内容,我试了用sort.setUser(user)没有用,咋办? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在定义映射的时候,将Sort类的username属性定义为一个many-to-one就行了。XML格式是这样的<many-to-one name="username" column="username" class="User" ></many-to-one>注解格式可以写成这样的 @ManyToOne(cascade = CascadeType.REFRESH, fetch = FetchType.LAZY) @JoinColumn(name = "username") private User username; sort.setUser(user);这个赋值只是程序中的赋值,那么还有一件事就是要告诉hibernate的实体配置文件,你要级联更新:<many-to-one name="username" column="username" class="User" cascade="all"></many-to-one>cascade也可以是cascade="save-update",只级联更新。 映射文件就是那样写了,也设置了级联cascade="all",但是操作后sort.setUser(user)表中的字段username并没有变化。我想问的是如何做来设置这个sort表的外键字段username? many-to-one这个标签就是用来设置外键的。如果没有效果,还得看看你的这个标签是不是写对了。 这个是我在数据库里设置外键后,自动生成的映射文件和POJO类,sort表的映射文件里是<many-to-one>,user表的映射文件里是<one-to-many>,自动生成的不会错吧。 Sort.hbm.xml中的定义是 <many-to-one name="user" class="Pojo.User" cascade="all"> <column name="username" length="20" /> </many-to-one> User.hbm.xml中的定义是 <set name="sorts" inverse="true"> <key> <column name="username" length="20" /> </key> <one-to-many class="Pojo.Sort" /> </set>就是这样写的 在定义映射的时候,将Sort类的username属性定义为一个many-to-one就行了。XML格式是这样的<many-to-one name="username" column="username" class="User" ></many-to-one>注解格式可以写成这样的 @ManyToOne(cascade = CascadeType.REFRESH, fetch = FetchType.LAZY) @JoinColumn(name = "username") private User username; 你不会没调用session.save(sort)方法吧还有,记得save前session.beginTransaction(),save后commit Hibernate映射关系配置错误,用many-to-one。 找到错误了,获得持久化对象user,必须和sort.setUser(user)写在同一个事务中才行,也就是说user必须是持久化对象。谢谢大家~ 怎么调用使用eclipse bpel组合的web服务?? unix下的文件路径问题 jsp 两次向数据库提交的问题 关于showModelessDialog弹出的窗口刷新不了父页面的奇怪问题 [源代码]--学习Struts时做了个通讯簿,各位提点意见吧 初学jsp,请教:jsp连接access tree标签中显示的问题? 有人遇见过这样的问题没,一个表单提交对不同的数据表进行操作。。。。。 <html:checkbox/> 怎么让它处于被选择的状态????急求高手解决,谢谢!! ssh2建表不成功 关于多个查询结果显示在一个表格中的问题 关于myeclipse项目上的标志问题。
XML格式是这样的
<many-to-one name="username" column="username" class="User" ></many-to-one>
注解格式可以写成这样的
@ManyToOne(cascade = CascadeType.REFRESH, fetch = FetchType.LAZY)
@JoinColumn(name = "username")
private User username;
这个赋值只是程序中的赋值,那么还有一件事就是要告诉hibernate的实体配置文件,你要级联更新:<many-to-one name="username" column="username" class="User" cascade="all"></many-to-one>cascade也可以是cascade="save-update",只级联更新。
<many-to-one name="user" class="Pojo.User" cascade="all">
<column name="username" length="20" />
</many-to-one> User.hbm.xml中的定义是
<set name="sorts" inverse="true">
<key>
<column name="username" length="20" />
</key>
<one-to-many class="Pojo.Sort" />
</set>
就是这样写的
XML格式是这样的
<many-to-one name="username" column="username" class="User" ></many-to-one>
注解格式可以写成这样的
@ManyToOne(cascade = CascadeType.REFRESH, fetch = FetchType.LAZY)
@JoinColumn(name = "username")
private User username;
还有,记得save前session.beginTransaction(),save后commit