我的测试类代码如下:package cn.nit.action;import java.util.ArrayList;
import java.util.Iterator;import org.hibernate.HibernateException;
import org.hibernate.Session;import cn.nit.Convert.StringToDate;
import cn.nit.dao.KttypeDAO;
import cn.nit.dao.KttypeDAOImpl;
import cn.nit.hibernateORM.Kt;
import cn.nit.hibernateORM.Ktperson;
import cn.nit.hibernateORM.KtpersonType;
import cn.nit.hibernateORM.Kttype;
import cn.nit.hibernateORM.PersonOrder;
import cn.nit.hibernateUtil.HibernateSessionFactory;public class TestMain {
public static void main(String args[]){
Kt kt = null;
Ktperson ktPerson = null;
Kttype ktType = null;
PersonOrder personOrder = null;
KtpersonType ktPersonType = null;
String Date = "2009-01-01";
Session session = null;
KttypeDAO ktTypeDAO = new KttypeDAOImpl();
try{
session = HibernateSessionFactory.getSession();
session.beginTransaction();
System.out.println("开始插入数据库");
ktType = new Kttype();
//在KTType表对应的POJO类插入相关数据 String sql = "from Kttype as ktType where ktType.typeNo='3'";
ArrayList ktTypelist = ktTypeDAO.doSelectKttypeDataFromDB(sql);
ktType.setTypeNo(new Integer("3"));//设置课题类型号,TypeNo是表KTType的主键 for(Iterator it = ktTypelist.iterator(); it.hasNext();){
Kttype ktType1 = (Kttype)it.next();
ktType.setTypeName(ktType1.getTypeName());//设置课题类型名
ktType.setStatus(ktType1.getStatus());//设置课题类型是否有效
}
kt = new Kt();
//在KT表对应的POJO类中插入相关数据 kt.setKtname("你好");
kt.setBeginDate((new StringToDate()).ConverDate(Date,
"yyyy-MM-dd"));
kt.setEndDate((new StringToDate()).ConverDate(Date,
"yyyy-MM-dd"));
kt.setActEndDate((new StringToDate()).ConverDate(Date,
"yyyy-MM-dd"));
kt.setSbDate((new StringToDate()).ConverDate(Date,
"yyyy-MM-dd"));
kt.setAmtFrom("省级");
kt.setAmt(new Double(0.2));
kt.setSchoolAmt(new Double(0.2));
kt.setReimbursedAmt(new Double(0.0D));
kt.setReimbursed(false);
kt.setApproved(false);
kt.setAward(false);
kt.setFrozen(false);
kt.setDescription("描述中...");
kt.setStatus(new Integer("1"));//申报课题都是默认都设为"1",管理员需要添加的标志;
//设置双向关联
//为课题设置课题类型
kt.setKttype(ktType);//插入课题类型号
ktPersonType = new KtpersonType();
//在KTTpersonType表对应的POJO类插入相关数据 ktPersonType.setTypeName("主持");
ktPersonType.setTypeNo(new Integer("1"));
personOrder = new PersonOrder();
//在PersonOrder表对应的POJO类插入相关数据 personOrder.setOrderName("第一");
personOrder.setOrderNo(new Integer("1"));
ktPerson = new Ktperson();
//在KTPerson表对应的POJO类插入相关数据 ktPerson.setPersonName("2");//先将课题主持人插入数据库
ktPerson.setPersonDeptName("计算机科学与技术系");
//为ktPerson设置...
ktPerson.setKt(kt);
ktPerson.setKtpersonType(ktPersonType);
ktPerson.setPersonOrder(personOrder); //为kt,ktPersonType,personOrder添加ktPerson
kt.getKtpersons().add(ktPerson);
ktPersonType.getKtpersons().add(ktPerson);
personOrder.getKtpersons().add(ktPerson);
session.save(ktType);//程序执行到这就跳转到catch那了。
//session.flush();
session.beginTransaction().commit();
}catch(HibernateException e){
System.out.println("hibernateException出错了");
session.beginTransaction().rollback();
}finally{
HibernateSessionFactory.closeSession();
}
}
}其中共有五个表:KT , KTType , KTPerson , PersonOrder , KTPersonTypeKT 与 KTType 存在多对一的关系KT 与 KTPerson 存在一对多的关系PersonOrder 与 KTPerson 存在一对多的关系KTPersonType 与 KTPerson 存在一对多的关系POJO类中的部分属性说明:KT.java ....
private Kttype kttype;
private Set ktpersons = new HashSet(0) ;
//set,get就不写了KT.hbm.xml <many-to-one name="kttype" class="cn.nit.hibernateORM.Kttype" fetch="select" cascade="all">
<column name="KTTypeNo" not-null="true" />
</many-to-one>
<set name="ktpersons" inverse="true">
<key>
<column name="KTNo" not-null="true" />
</key>
<one-to-many class="cn.nit.hibernateORM.Ktperson" />
</set>
KTType.java private Set kts = new HashSet(0);KTType.hbm.xml <set name="kts" inverse="true">
<key>
<column name="KTTypeNo" not-null="true" />
</key>
<one-to-many class="cn.nit.hibernateORM.Kt" />
</set>
PersonOrder.java private Set ktpersons = new HashSet(0);PersonOrder.hbm.xml <set name="ktpersons" inverse="true">
<key>
<column name="PersonOrderNo" not-null="true" />
</key>
<one-to-many class="cn.nit.hibernateORM.Ktperson" />
</set>
KTPersonType.java private Set ktpersons = new HashSet(0);KTPersonType.hbm.xml <set name="ktpersons" inverse="true">
<key>
<column name="PersonTypeNo" not-null="true" />
</key>
<one-to-many class="cn.nit.hibernateORM.Ktperson" />
</set>
KTPerson.java private PersonOrder personOrder;
private Kt kt;
private KtpersonType ktpersonType;KTPerson.hbm.xml <many-to-one name="personOrder" class="cn.nit.hibernateORM.PersonOrder" fetch="select" cascade="all" insert="false" update="false">
<column name="PersonOrderNo" not-null="true" />
</many-to-one>
<many-to-one name="kt" class="cn.nit.hibernateORM.Kt" fetch="select">
<column name="KTNo" not-null="true" />
</many-to-one>
<many-to-one name="ktpersonType"
class="cn.nit.hibernateORM.KtpersonType" fetch="select" cascade="all" insert="false" update="false">
<column name="PersonTypeNo" not-null="true" />
</many-to-one>
在做插入的时候,按照上面插入的话,就是这段代码:ktType = new Kttype();
//在KTType表对应的POJO类插入相关数据
String sql = "from Kttype as ktType where ktType.typeNo='3'";
ArrayList ktTypelist = ktTypeDAO.doSelectKttypeDataFromDB(sql);
ktType.setTypeNo(new Integer("3"));//设置课题类型号
for(Iterator it = ktTypelist.iterator(); it.hasNext();){
Kttype ktType1 = (Kttype)it.next();
ktType.setTypeName(ktType1.getTypeName());//设置课题类型名
ktType.setStatus(ktType1.getStatus());//设置课题类型是否有效
}
这个是不是有问题。其实我的表KTType是有数据的,KTType表中的数据有几条件固定的记录,但是因为 KT表有KTType的字段,也就是它的主键,所以我用了ktType.setTypeNo(new Integer("3");;其它的表像PersonOrder, KTPersonType, 这两个表也是有几个固定的记录的,其实数据只是插入到KT , KTPerson中去,只不过跟它们相关联了;插入数据是不是我上面的那种做法?可能有些人说叫我去看看一下书,叫我看书是没错,但是这种东西要真真的操作的时候才会发现问题所在!
import java.util.Iterator;import org.hibernate.HibernateException;
import org.hibernate.Session;import cn.nit.Convert.StringToDate;
import cn.nit.dao.KttypeDAO;
import cn.nit.dao.KttypeDAOImpl;
import cn.nit.hibernateORM.Kt;
import cn.nit.hibernateORM.Ktperson;
import cn.nit.hibernateORM.KtpersonType;
import cn.nit.hibernateORM.Kttype;
import cn.nit.hibernateORM.PersonOrder;
import cn.nit.hibernateUtil.HibernateSessionFactory;public class TestMain {
public static void main(String args[]){
Kt kt = null;
Ktperson ktPerson = null;
Kttype ktType = null;
PersonOrder personOrder = null;
KtpersonType ktPersonType = null;
String Date = "2009-01-01";
Session session = null;
KttypeDAO ktTypeDAO = new KttypeDAOImpl();
try{
session = HibernateSessionFactory.getSession();
session.beginTransaction();
System.out.println("开始插入数据库");
ktType = new Kttype();
//在KTType表对应的POJO类插入相关数据 String sql = "from Kttype as ktType where ktType.typeNo='3'";
ArrayList ktTypelist = ktTypeDAO.doSelectKttypeDataFromDB(sql);
ktType.setTypeNo(new Integer("3"));//设置课题类型号,TypeNo是表KTType的主键 for(Iterator it = ktTypelist.iterator(); it.hasNext();){
Kttype ktType1 = (Kttype)it.next();
ktType.setTypeName(ktType1.getTypeName());//设置课题类型名
ktType.setStatus(ktType1.getStatus());//设置课题类型是否有效
}
kt = new Kt();
//在KT表对应的POJO类中插入相关数据 kt.setKtname("你好");
kt.setBeginDate((new StringToDate()).ConverDate(Date,
"yyyy-MM-dd"));
kt.setEndDate((new StringToDate()).ConverDate(Date,
"yyyy-MM-dd"));
kt.setActEndDate((new StringToDate()).ConverDate(Date,
"yyyy-MM-dd"));
kt.setSbDate((new StringToDate()).ConverDate(Date,
"yyyy-MM-dd"));
kt.setAmtFrom("省级");
kt.setAmt(new Double(0.2));
kt.setSchoolAmt(new Double(0.2));
kt.setReimbursedAmt(new Double(0.0D));
kt.setReimbursed(false);
kt.setApproved(false);
kt.setAward(false);
kt.setFrozen(false);
kt.setDescription("描述中...");
kt.setStatus(new Integer("1"));//申报课题都是默认都设为"1",管理员需要添加的标志;
//设置双向关联
//为课题设置课题类型
kt.setKttype(ktType);//插入课题类型号
ktPersonType = new KtpersonType();
//在KTTpersonType表对应的POJO类插入相关数据 ktPersonType.setTypeName("主持");
ktPersonType.setTypeNo(new Integer("1"));
personOrder = new PersonOrder();
//在PersonOrder表对应的POJO类插入相关数据 personOrder.setOrderName("第一");
personOrder.setOrderNo(new Integer("1"));
ktPerson = new Ktperson();
//在KTPerson表对应的POJO类插入相关数据 ktPerson.setPersonName("2");//先将课题主持人插入数据库
ktPerson.setPersonDeptName("计算机科学与技术系");
//为ktPerson设置...
ktPerson.setKt(kt);
ktPerson.setKtpersonType(ktPersonType);
ktPerson.setPersonOrder(personOrder); //为kt,ktPersonType,personOrder添加ktPerson
kt.getKtpersons().add(ktPerson);
ktPersonType.getKtpersons().add(ktPerson);
personOrder.getKtpersons().add(ktPerson);
session.save(ktType);//程序执行到这就跳转到catch那了。
//session.flush();
session.beginTransaction().commit();
}catch(HibernateException e){
System.out.println("hibernateException出错了");
session.beginTransaction().rollback();
}finally{
HibernateSessionFactory.closeSession();
}
}
}其中共有五个表:KT , KTType , KTPerson , PersonOrder , KTPersonTypeKT 与 KTType 存在多对一的关系KT 与 KTPerson 存在一对多的关系PersonOrder 与 KTPerson 存在一对多的关系KTPersonType 与 KTPerson 存在一对多的关系POJO类中的部分属性说明:KT.java ....
private Kttype kttype;
private Set ktpersons = new HashSet(0) ;
//set,get就不写了KT.hbm.xml <many-to-one name="kttype" class="cn.nit.hibernateORM.Kttype" fetch="select" cascade="all">
<column name="KTTypeNo" not-null="true" />
</many-to-one>
<set name="ktpersons" inverse="true">
<key>
<column name="KTNo" not-null="true" />
</key>
<one-to-many class="cn.nit.hibernateORM.Ktperson" />
</set>
KTType.java private Set kts = new HashSet(0);KTType.hbm.xml <set name="kts" inverse="true">
<key>
<column name="KTTypeNo" not-null="true" />
</key>
<one-to-many class="cn.nit.hibernateORM.Kt" />
</set>
PersonOrder.java private Set ktpersons = new HashSet(0);PersonOrder.hbm.xml <set name="ktpersons" inverse="true">
<key>
<column name="PersonOrderNo" not-null="true" />
</key>
<one-to-many class="cn.nit.hibernateORM.Ktperson" />
</set>
KTPersonType.java private Set ktpersons = new HashSet(0);KTPersonType.hbm.xml <set name="ktpersons" inverse="true">
<key>
<column name="PersonTypeNo" not-null="true" />
</key>
<one-to-many class="cn.nit.hibernateORM.Ktperson" />
</set>
KTPerson.java private PersonOrder personOrder;
private Kt kt;
private KtpersonType ktpersonType;KTPerson.hbm.xml <many-to-one name="personOrder" class="cn.nit.hibernateORM.PersonOrder" fetch="select" cascade="all" insert="false" update="false">
<column name="PersonOrderNo" not-null="true" />
</many-to-one>
<many-to-one name="kt" class="cn.nit.hibernateORM.Kt" fetch="select">
<column name="KTNo" not-null="true" />
</many-to-one>
<many-to-one name="ktpersonType"
class="cn.nit.hibernateORM.KtpersonType" fetch="select" cascade="all" insert="false" update="false">
<column name="PersonTypeNo" not-null="true" />
</many-to-one>
在做插入的时候,按照上面插入的话,就是这段代码:ktType = new Kttype();
//在KTType表对应的POJO类插入相关数据
String sql = "from Kttype as ktType where ktType.typeNo='3'";
ArrayList ktTypelist = ktTypeDAO.doSelectKttypeDataFromDB(sql);
ktType.setTypeNo(new Integer("3"));//设置课题类型号
for(Iterator it = ktTypelist.iterator(); it.hasNext();){
Kttype ktType1 = (Kttype)it.next();
ktType.setTypeName(ktType1.getTypeName());//设置课题类型名
ktType.setStatus(ktType1.getStatus());//设置课题类型是否有效
}
这个是不是有问题。其实我的表KTType是有数据的,KTType表中的数据有几条件固定的记录,但是因为 KT表有KTType的字段,也就是它的主键,所以我用了ktType.setTypeNo(new Integer("3");;其它的表像PersonOrder, KTPersonType, 这两个表也是有几个固定的记录的,其实数据只是插入到KT , KTPerson中去,只不过跟它们相关联了;插入数据是不是我上面的那种做法?可能有些人说叫我去看看一下书,叫我看书是没错,但是这种东西要真真的操作的时候才会发现问题所在!
解决方案 »
- 获得一个字符串中出现次数最多的子字符串及次数。子字符串不定长
- jndi配置连接池
- 请问如何将html表单转换生成word文档?
- 如何控制选值查询序列间的序列排查不报:严重: Servlet.service() for servlet jsp threw exception .....
- 去掉页眉页脚
- 请教高手:如何根据Key取properties文件的Value程序?
- 菜鸟求助!!关于jsp!!
- Rod Johnson说:设计一个业务对象带有远程接口、具备分布能力的应用程序,这是对OO的严重破坏。我想请教一下为什么?
- 为什么我的tomcat不能停止?详情请进
- 谁有XML SPY5.0的注册号!!!
- 请教MyEclipse快捷键问题
- struts2中的小问题
要有错误报告我都高兴了.
ta=session.beginTransaction();
...
ta.commit();
..
ta.rallback();
这里
}catch(HibernateException e){
System.out.println("hibernateException出错了");
session.beginTransaction().rollback();
}finally{
改为
}catch(HibernateException e){
e.printStackTrace();
System.out.println("hibernateException出错了");
session.beginTransaction().rollback();
}finally{