问题:用hibernate只对多表(bbsrevert表)插入一条记录,单表(bbstopic,bbsusers)不插入数据,但多表有2个外键。
用mysql客户端执行:insert into bbsrevert values('1','1','sfasdfdsa','2009-01');这里就能成功插入。
目标:像在mysql客户端这样插入值。如果看不懂下面这个Action,就请看Action下面的代码,不知道我表达清楚没有,请各位高人指教。public class AddRevertAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
//添加回复
Session session=HibernateSessionFactory.getSession();
session.beginTransaction();
Bbsrevert br=new Bbsrevert();
br.setRevertcontent("dfbhdfs");
br.setReverttime("2009-01");
//问题在下面两行,这两个外键的ID如何插入
br.getBbstopic().setBbsid(1); //这样写是不行的
br.getBbsusers().setUserid(1);
session.save(br);
session.getTransaction().commit();
session.close();
return null;
}-----------------------------------------
这是一个简单的BBS,有三个表
create table bbsrevert( //回复表
bbsrevertid int not null auto_increment primary key,
bbsid int not null, //外键
userid int not null, //外键
revertcontent varchar(500) not null,
reverttime varchar(30) not null
) ;create table bbstopic( //主题表
bbsid int not null auto_increment primary key,
topic varchar(150) not null,
topiccontent varchar(500) not null,
releasetime varchar(50) not null
) ;create table bbsusers( //用户表
userid int not null auto_increment primary key,
username varchar(50) not null,
password varchar(50) not null,
useremail varchar(50) not null
) ;
------------------------用hibernate生成的pojo类,三个表一起生成的,没修改过
Bbsrevert.class
private Integer bbsrevertid;
private Bbstopic bbstopic;
private Bbsusers bbsusers;
private String revertcontent;
private String reverttime;
....... get set 方法Bbstopic.class
private Integer bbsid;
private String topic;
private String topiccontent;
private String releasetime;
private Set bbsreverts = new HashSet(0);
......Bbsusers.class
private Integer userid;
private String username;
private String password;
private String useremail;
private Set bbsreverts = new HashSet(0);
.......
--------------------------以下是三个类的.hbm.xml文件,加了cascade="all"<hibernate-mapping>
Bbsrevert.hbm.xml
<class name="com.zk.pojo.Bbsrevert" table="bbsrevert" >
<id name="bbsrevertid" type="java.lang.Integer">
<column name="bbsrevertid" />
<generator class="native" />
</id>
<many-to-one name="bbstopic" class="com.zk.pojo.Bbstopic" fetch="select" cascade="all">
<column name="bbsid" not-null="true" />
</many-to-one>
<many-to-one name="bbsusers" class="com.zk.pojo.Bbsusers" fetch="select" cascade="all">
<column name="userid" not-null="true" />
</many-to-one>
<property name="revertcontent" type="java.lang.String">
<column name="revertcontent" length="500" not-null="true" />
</property>
<property name="reverttime" type="java.lang.String">
<column name="reverttime" length="30" not-null="true" />
</property>
</class>
</hibernate-mapping>
Bbstopic.hbm.xml
<hibernate-mapping>
<class name="com.zk.pojo.Bbstopic" table="bbstopic" >
<id name="bbsid" type="java.lang.Integer">
<column name="bbsid" />
<generator class="native" />
</id>
<property name="topic" type="java.lang.String">
<column name="topic" length="150" not-null="true" />
</property>
<property name="topiccontent" type="java.lang.String">
<column name="topiccontent" length="500" not-null="true" />
</property>
<property name="releasetime" type="java.lang.String">
<column name="releasetime" length="50" not-null="true" />
</property>
<set name="bbsreverts" inverse="true" cascade="all" lazy="true">
<key>
<column name="bbsid" not-null="true" />
</key>
<one-to-many class="com.zk.pojo.Bbsrevert" />
</set>
</class>
</hibernate-mapping>
Bbsusers.hbm.xml
<hibernate-mapping>
<class name="com.zk.pojo.Bbsusers" table="bbsusers" >
<id name="userid" type="java.lang.Integer">
<column name="userid" />
<generator class="native" />
</id>
<property name="username" type="java.lang.String">
<column name="username" length="50" not-null="true" />
</property>
<property name="password" type="java.lang.String">
<column name="password" length="50" not-null="true" />
</property>
<property name="useremail" type="java.lang.String">
<column name="useremail" length="50" not-null="true" />
</property>
<set name="bbsreverts" inverse="true" cascade="all" lazy="true">
<key>
<column name="userid" not-null="true" />
</key>
<one-to-many class="com.zk.pojo.Bbsrevert" />
</set>
</class>
</hibernate-mapping>
用mysql客户端执行:insert into bbsrevert values('1','1','sfasdfdsa','2009-01');这里就能成功插入。
目标:像在mysql客户端这样插入值。如果看不懂下面这个Action,就请看Action下面的代码,不知道我表达清楚没有,请各位高人指教。public class AddRevertAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
//添加回复
Session session=HibernateSessionFactory.getSession();
session.beginTransaction();
Bbsrevert br=new Bbsrevert();
br.setRevertcontent("dfbhdfs");
br.setReverttime("2009-01");
//问题在下面两行,这两个外键的ID如何插入
br.getBbstopic().setBbsid(1); //这样写是不行的
br.getBbsusers().setUserid(1);
session.save(br);
session.getTransaction().commit();
session.close();
return null;
}-----------------------------------------
这是一个简单的BBS,有三个表
create table bbsrevert( //回复表
bbsrevertid int not null auto_increment primary key,
bbsid int not null, //外键
userid int not null, //外键
revertcontent varchar(500) not null,
reverttime varchar(30) not null
) ;create table bbstopic( //主题表
bbsid int not null auto_increment primary key,
topic varchar(150) not null,
topiccontent varchar(500) not null,
releasetime varchar(50) not null
) ;create table bbsusers( //用户表
userid int not null auto_increment primary key,
username varchar(50) not null,
password varchar(50) not null,
useremail varchar(50) not null
) ;
------------------------用hibernate生成的pojo类,三个表一起生成的,没修改过
Bbsrevert.class
private Integer bbsrevertid;
private Bbstopic bbstopic;
private Bbsusers bbsusers;
private String revertcontent;
private String reverttime;
....... get set 方法Bbstopic.class
private Integer bbsid;
private String topic;
private String topiccontent;
private String releasetime;
private Set bbsreverts = new HashSet(0);
......Bbsusers.class
private Integer userid;
private String username;
private String password;
private String useremail;
private Set bbsreverts = new HashSet(0);
.......
--------------------------以下是三个类的.hbm.xml文件,加了cascade="all"<hibernate-mapping>
Bbsrevert.hbm.xml
<class name="com.zk.pojo.Bbsrevert" table="bbsrevert" >
<id name="bbsrevertid" type="java.lang.Integer">
<column name="bbsrevertid" />
<generator class="native" />
</id>
<many-to-one name="bbstopic" class="com.zk.pojo.Bbstopic" fetch="select" cascade="all">
<column name="bbsid" not-null="true" />
</many-to-one>
<many-to-one name="bbsusers" class="com.zk.pojo.Bbsusers" fetch="select" cascade="all">
<column name="userid" not-null="true" />
</many-to-one>
<property name="revertcontent" type="java.lang.String">
<column name="revertcontent" length="500" not-null="true" />
</property>
<property name="reverttime" type="java.lang.String">
<column name="reverttime" length="30" not-null="true" />
</property>
</class>
</hibernate-mapping>
Bbstopic.hbm.xml
<hibernate-mapping>
<class name="com.zk.pojo.Bbstopic" table="bbstopic" >
<id name="bbsid" type="java.lang.Integer">
<column name="bbsid" />
<generator class="native" />
</id>
<property name="topic" type="java.lang.String">
<column name="topic" length="150" not-null="true" />
</property>
<property name="topiccontent" type="java.lang.String">
<column name="topiccontent" length="500" not-null="true" />
</property>
<property name="releasetime" type="java.lang.String">
<column name="releasetime" length="50" not-null="true" />
</property>
<set name="bbsreverts" inverse="true" cascade="all" lazy="true">
<key>
<column name="bbsid" not-null="true" />
</key>
<one-to-many class="com.zk.pojo.Bbsrevert" />
</set>
</class>
</hibernate-mapping>
Bbsusers.hbm.xml
<hibernate-mapping>
<class name="com.zk.pojo.Bbsusers" table="bbsusers" >
<id name="userid" type="java.lang.Integer">
<column name="userid" />
<generator class="native" />
</id>
<property name="username" type="java.lang.String">
<column name="username" length="50" not-null="true" />
</property>
<property name="password" type="java.lang.String">
<column name="password" length="50" not-null="true" />
</property>
<property name="useremail" type="java.lang.String">
<column name="useremail" length="50" not-null="true" />
</property>
<set name="bbsreverts" inverse="true" cascade="all" lazy="true">
<key>
<column name="userid" not-null="true" />
</key>
<one-to-many class="com.zk.pojo.Bbsrevert" />
</set>
</class>
</hibernate-mapping>
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货