我的hibernate外键一对一,同时保存时,不是两个都是insert,
而是一个insert,一个update,我想两个都insert,如何解决呀?====Line.hbm.xml====
<hibernate-mapping>
<class name="fatcat.db.Line" table="line" >
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="native" />
</id>
<property name="lineName" type="java.lang.String" column="line_name" length="250"/>
<many-to-one name="LineDetail" class="fatcat.db.LineDetail" column="bh" cascade="all" unique="true" />
</class>
</hibernate-mapping>====LineDetail.hbm.xml====
<hibernate-mapping>
<class name="fatcat.db.LineDetail" table="line_detail" >
<id name="line_bh" type="java.lang.String">
<column name="line_bh" length="30" />
<generator class="native" />
</id>
<property name="content" type="java.lang.String" column="content" />
<one-to-one name="line_bh" class="fatcat.db.Line" property-ref="LineDetail"/>
</class>
</hibernate-mapping> ====Line.java====
public class Line {
private LineDetail LineDetail;
private Integer id;
private String bh;
private String lineName; public Line() {} public Integer getId() {return this.id;}
public void setId(Integer id) {this.id = id;} public String getBh() {return this.bh;}
public void setBh(String bh) {this.bh = bh;} public String getLineName() {return this.lineName;}
public void setLineName(String lineName) {this.lineName = lineName;} public LineDetail getLineDetail() {return LineDetail;}
public void setLineDetail(LineDetail lineDetail) {this.LineDetail = lineDetail;}
}
====LineDetail.java====
public class LineDetail {
private String line_bh;
private String content;
private Line line; public Line getLine() {return line;}
public void setLine(Line line) {this.line = line;} public LineDetail() {}
public LineDetail(String content) {this.content = content;} public String getline_bh() {return this.line_bh;}
public void setline_bh(String line_bh) {this.line_bh = line_bh;} public String getContent() {return this.content;}
public void setContent(String content) {this.content = content;}
}
=======两个同时保存======Line line = new Line();
line.setBh("123456789");
line.setLineName("海南旅游线路");
LineDetail line_detail = new LineDetail();
line_detail.setContent("asdfasfasfasfdasfafwef");
line_detail.setline_bh("123456789");
line.setLineDetail(line_detail);
line_detail.setLine(line);
sessionFactory.getCurrentSession().save(line);我的hibernate外键一对一,同时保存时,不是两个都是insert,
而是一个insert,一个update,我想两个都insert,如何解决呀?
而是一个insert,一个update,我想两个都insert,如何解决呀?====Line.hbm.xml====
<hibernate-mapping>
<class name="fatcat.db.Line" table="line" >
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="native" />
</id>
<property name="lineName" type="java.lang.String" column="line_name" length="250"/>
<many-to-one name="LineDetail" class="fatcat.db.LineDetail" column="bh" cascade="all" unique="true" />
</class>
</hibernate-mapping>====LineDetail.hbm.xml====
<hibernate-mapping>
<class name="fatcat.db.LineDetail" table="line_detail" >
<id name="line_bh" type="java.lang.String">
<column name="line_bh" length="30" />
<generator class="native" />
</id>
<property name="content" type="java.lang.String" column="content" />
<one-to-one name="line_bh" class="fatcat.db.Line" property-ref="LineDetail"/>
</class>
</hibernate-mapping> ====Line.java====
public class Line {
private LineDetail LineDetail;
private Integer id;
private String bh;
private String lineName; public Line() {} public Integer getId() {return this.id;}
public void setId(Integer id) {this.id = id;} public String getBh() {return this.bh;}
public void setBh(String bh) {this.bh = bh;} public String getLineName() {return this.lineName;}
public void setLineName(String lineName) {this.lineName = lineName;} public LineDetail getLineDetail() {return LineDetail;}
public void setLineDetail(LineDetail lineDetail) {this.LineDetail = lineDetail;}
}
====LineDetail.java====
public class LineDetail {
private String line_bh;
private String content;
private Line line; public Line getLine() {return line;}
public void setLine(Line line) {this.line = line;} public LineDetail() {}
public LineDetail(String content) {this.content = content;} public String getline_bh() {return this.line_bh;}
public void setline_bh(String line_bh) {this.line_bh = line_bh;} public String getContent() {return this.content;}
public void setContent(String content) {this.content = content;}
}
=======两个同时保存======Line line = new Line();
line.setBh("123456789");
line.setLineName("海南旅游线路");
LineDetail line_detail = new LineDetail();
line_detail.setContent("asdfasfasfasfdasfafwef");
line_detail.setline_bh("123456789");
line.setLineDetail(line_detail);
line_detail.setLine(line);
sessionFactory.getCurrentSession().save(line);我的hibernate外键一对一,同时保存时,不是两个都是insert,
而是一个insert,一个update,我想两个都insert,如何解决呀?
解决方案 »
- 收藏 不显示删除回复显示所有回复显示星级回复显示得分回复 散分啦,,各位大侠,我将各种web标签全部整理收集了,供大家一起使用。。[
- SSH如何对IP地址库进行读取??根据IP显示其地理位置?
- java 连接 oracle时发生很奇怪的null错误
- jstl连接后得到数据,诡异
- 疯掉了,com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:问题。
- Servlet action is not available,问题出在哪里??
- 简单问题,大家来拿分
- 页面加载太慢的问题
- 加载一个页面的时候执行一个javascript函数,我错了吗?
- checkbox传值问题!
- 在hibernate字段映射中,我想自定义生成字段主键的生成方式,该如何做呢?
- 在hibernate中,主键是通过set人工设置的,既不是系统自动生成,也不是数据生成,如何设置呢?
<one-to-one name="line_bh" class="fatcat.db.Line" cascade="all" />
配置文件修改成这样
保存的时候,保存lineDetail
重新生成下表结构,应该没问题的
保存的时候保存
sessionFactory.getCurrentSession().save(lineDetail);