我用Eclipse写了一个项目。Struts1.x + Hibernate3.0(Hibernate双向一对一) 用Junit测试时出现javax.exe应用程序错误。但在WEB测试中没有问题(服务器Tomcat5.0)。在开始的时候,用Junit测试保存(Save)、加载(Load)都可以。后来写了一个删除(Delete)测试,Junit就出现javax.exe应用程序错误。程序被终止。但在Eclipse中其它的工程中(以前写过的工程),运行Junit测试没问题。请高手指教 谢谢!代码如下:/**
* Person Bean
*
*/
public class Person {
// ID
private String id;
// Name
private String name;
// ID Card
private IdCard idCard; public IdCard getIdCard() {
return idCard;
} public void setIdCard(IdCard idCard) {
this.idCard = idCard;
} public String getId() {
return id;
} public void setId(String id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}}
-------------------------------------------------------------------------------------------------------// Person.hbm.xml 映射文件
<hibernate-mapping package="com.idcard.webapp.persistent.model"> <class name="Person" table="t_person">
<id name="id">
<generator class="foreign">
<param name="property">idCard</param>
</generator>
</id>
<property name="name">
<column name="name" sql-type="varchar(20)" not-null="true"/>
</property>
<one-to-one name="idCard" constrained="true" lazy="false"/>
</class>
</hibernate-mapping>
-------------------------------------------------------------------------------------------------------/**
*
* IdCard Bean
*
*/
public class IdCard {
// ID
private String id;
// Card Name
private String cardNo;
// Person
private Person person; public String getId() {
return id;
} public void setId(String id) {
this.id = id;
} public String getCardNo() {
return cardNo;
} public void setCardNo(String cardNo) {
this.cardNo = cardNo;
} public Person getPerson() {
return person;
} public void setPerson(Person person) {
this.person = person;
}}
-------------------------------------------------------------------------------------------------------// IdCard.hbm.xml 映射文件
<hibernate-mapping package="com.idcard.webapp.persistent.model"> <class name="IdCard" table="t_idcard">
<id name="id" type="string">
<column name="id" sql-type="varchar(32)" not-null="true"/>
<generator class="uuid"/>
</id>
<property name="cardNo">
<column name="card_no" sql-type="varchar(18)" not-null="true" unique="true"/>
</property>
<one-to-one name="person"/>
</class>
</hibernate-mapping>
-------------------------------------------------------------------------------------------------------/**
*
* hibernate.cfg.xml 映射文件
*
*/
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/IdentityCard</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">999999</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="show_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<mapping resource="com/idcard/webapp/persistent/model/Person.hbm.xml"/>
<mapping resource="com/idcard/webapp/persistent/model/IdCard.hbm.xml"/>
</session-factory>
</hibernate-configuration>
-------------------------------------------------------------------------------------------------------
/**
*
* HibernateUtils.java (Hibernate工具类)
*
*/
public class HibernateUtils {
// Session Factory
private static SessionFactory sessionFactory;
static{
try{
Configuration cfg = new Configuration().configure("com/idcard/webapp/persistent/cfg/hibernate.cfg.xml");
sessionFactory = cfg.buildSessionFactory();
}catch(Exception e){
e.printStackTrace();
}
}
/**
* Get Session Factory
*
* @return
*/
public static SessionFactory getSessionFactory(){
return sessionFactory;
}
/**
* Get Session
*
* @return
*/
public static Session getSession(){
return getSessionFactory().openSession();
}
/**
* Find Object Info
*
* @param hql
* @return
*/
public static List find(String hql){
List list=null;
Session session=null;
try{
session = getSession();
session.beginTransaction();
list = session.createQuery(hql).list();
session.beginTransaction().commit();
}catch(Exception e){
e.printStackTrace();
session.beginTransaction().rollback();
}finally{
closeSession(session);
}
return list;
}
/**
* Save Object
*
* @param obj
* @return
*/
public static boolean save(Object obj){
Session session=null;
try{
session = getSession();
session.beginTransaction();
session.save(obj);
session.beginTransaction().commit();
return true;
}catch(Exception e){
e.printStackTrace();
session.beginTransaction().rollback();
}finally{
closeSession(session);
}
return false;
}
/**
* Update Object
*
* @param obj
* @return
*/
public static boolean update(Object obj){
Session session=null;
try{
session = getSession();
session.beginTransaction();
session.update(obj);
session.beginTransaction().commit();
return true;
}catch(Exception e){
e.printStackTrace();
session.beginTransaction().rollback();
}finally{
closeSession(session);
}
return false;
}
/**
* Delete Object
*
* @param obj
* @return
*/
public static boolean delete(Object obj){
Session session=null;
try{
session = getSession();
session.beginTransaction();
session.delete(obj);
session.beginTransaction().commit();
return true;
}catch(Exception e){
e.printStackTrace();
session.beginTransaction().rollback();
}finally{
closeSession(session);
}
return false;
}
/**
* Close Session
*
* @param session
*/
public static void closeSession(Session session){
if(session != null){
if(session.isOpen()){
session.close();
}
}
}}
-------------------------------------------------------------------------------------------------------
/*
*
* Junit 测试类
*
*/
public class IdCardTest extends TestCase{
// Test Save Person
public void testSavePerson(){
if(PersonManager.save(getPerson())){
System.out.println("-------------Save Person Successfully!---------------");
}
}
// Load Person
public void testLoadPerson(){
Session session=null;
try {
session = HibernateUtils.getSession();
session.beginTransaction();
Person person = (Person)session.load(Person.class, "402881e4226f5e4601226f5e48370001");
System.out.println("Person Name: "+ person.getName());
System.out.println("Card NO: "+ person.getIdCard().getCardNo());
session.beginTransaction().commit();
} catch (Exception e) {
e.printStackTrace();
session.beginTransaction().rollback();
}finally{
HibernateUtils.closeSession(session);
}
}
// Load IdCard
public void testLoadIdCard(){
Session session=null;
try {
session = HibernateUtils.getSession();
IdCard idCard = (IdCard)session.load(IdCard.class, "402881e42274ae8a012274ae8bf00001");
System.out.println("Card ID: "+ idCard.getCardNo());
System.out.println("Person Name: "+ idCard.getPerson().getName());
session.beginTransaction().commit();
} catch (Exception e) {
e.printStackTrace();
session.beginTransaction().rollback();
}finally{
HibernateUtils.closeSession(session);
}
}
// Find PersonById
public void testPersionById(){
Person person = PersonManager.findPersonById("402881e4226f5e4601226f5e48370001");
System.out.println("Person Name: "+ person.getName());
System.out.println("Card NO: "+ person.getIdCard().getCardNo());
}
// Delete person
public void testFindPersonAll(){
List<Person> list = HibernateUtils.find("Form person");
System.out.println("Person Name: "+ list.get(0).getName());
System.out.println("Card NO: "+ list.get(0).getIdCard().getCardNo());
}
/**
*
* ======================================================================================
*
*/
// Get Person
private Person getPerson(){
IdCard idCard = new IdCard();
idCard.setCardNo("210803197903251016");
Person person = new Person();
person.setName("aaa");
person.setIdCard(idCard);
return person;
}
}
-------------------------------------------------------------------------------------------------------
以前这些方法都好用的,现在都不好用了。
请高手指教 谢谢!
* Person Bean
*
*/
public class Person {
// ID
private String id;
// Name
private String name;
// ID Card
private IdCard idCard; public IdCard getIdCard() {
return idCard;
} public void setIdCard(IdCard idCard) {
this.idCard = idCard;
} public String getId() {
return id;
} public void setId(String id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}}
-------------------------------------------------------------------------------------------------------// Person.hbm.xml 映射文件
<hibernate-mapping package="com.idcard.webapp.persistent.model"> <class name="Person" table="t_person">
<id name="id">
<generator class="foreign">
<param name="property">idCard</param>
</generator>
</id>
<property name="name">
<column name="name" sql-type="varchar(20)" not-null="true"/>
</property>
<one-to-one name="idCard" constrained="true" lazy="false"/>
</class>
</hibernate-mapping>
-------------------------------------------------------------------------------------------------------/**
*
* IdCard Bean
*
*/
public class IdCard {
// ID
private String id;
// Card Name
private String cardNo;
// Person
private Person person; public String getId() {
return id;
} public void setId(String id) {
this.id = id;
} public String getCardNo() {
return cardNo;
} public void setCardNo(String cardNo) {
this.cardNo = cardNo;
} public Person getPerson() {
return person;
} public void setPerson(Person person) {
this.person = person;
}}
-------------------------------------------------------------------------------------------------------// IdCard.hbm.xml 映射文件
<hibernate-mapping package="com.idcard.webapp.persistent.model"> <class name="IdCard" table="t_idcard">
<id name="id" type="string">
<column name="id" sql-type="varchar(32)" not-null="true"/>
<generator class="uuid"/>
</id>
<property name="cardNo">
<column name="card_no" sql-type="varchar(18)" not-null="true" unique="true"/>
</property>
<one-to-one name="person"/>
</class>
</hibernate-mapping>
-------------------------------------------------------------------------------------------------------/**
*
* hibernate.cfg.xml 映射文件
*
*/
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/IdentityCard</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">999999</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="show_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<mapping resource="com/idcard/webapp/persistent/model/Person.hbm.xml"/>
<mapping resource="com/idcard/webapp/persistent/model/IdCard.hbm.xml"/>
</session-factory>
</hibernate-configuration>
-------------------------------------------------------------------------------------------------------
/**
*
* HibernateUtils.java (Hibernate工具类)
*
*/
public class HibernateUtils {
// Session Factory
private static SessionFactory sessionFactory;
static{
try{
Configuration cfg = new Configuration().configure("com/idcard/webapp/persistent/cfg/hibernate.cfg.xml");
sessionFactory = cfg.buildSessionFactory();
}catch(Exception e){
e.printStackTrace();
}
}
/**
* Get Session Factory
*
* @return
*/
public static SessionFactory getSessionFactory(){
return sessionFactory;
}
/**
* Get Session
*
* @return
*/
public static Session getSession(){
return getSessionFactory().openSession();
}
/**
* Find Object Info
*
* @param hql
* @return
*/
public static List find(String hql){
List list=null;
Session session=null;
try{
session = getSession();
session.beginTransaction();
list = session.createQuery(hql).list();
session.beginTransaction().commit();
}catch(Exception e){
e.printStackTrace();
session.beginTransaction().rollback();
}finally{
closeSession(session);
}
return list;
}
/**
* Save Object
*
* @param obj
* @return
*/
public static boolean save(Object obj){
Session session=null;
try{
session = getSession();
session.beginTransaction();
session.save(obj);
session.beginTransaction().commit();
return true;
}catch(Exception e){
e.printStackTrace();
session.beginTransaction().rollback();
}finally{
closeSession(session);
}
return false;
}
/**
* Update Object
*
* @param obj
* @return
*/
public static boolean update(Object obj){
Session session=null;
try{
session = getSession();
session.beginTransaction();
session.update(obj);
session.beginTransaction().commit();
return true;
}catch(Exception e){
e.printStackTrace();
session.beginTransaction().rollback();
}finally{
closeSession(session);
}
return false;
}
/**
* Delete Object
*
* @param obj
* @return
*/
public static boolean delete(Object obj){
Session session=null;
try{
session = getSession();
session.beginTransaction();
session.delete(obj);
session.beginTransaction().commit();
return true;
}catch(Exception e){
e.printStackTrace();
session.beginTransaction().rollback();
}finally{
closeSession(session);
}
return false;
}
/**
* Close Session
*
* @param session
*/
public static void closeSession(Session session){
if(session != null){
if(session.isOpen()){
session.close();
}
}
}}
-------------------------------------------------------------------------------------------------------
/*
*
* Junit 测试类
*
*/
public class IdCardTest extends TestCase{
// Test Save Person
public void testSavePerson(){
if(PersonManager.save(getPerson())){
System.out.println("-------------Save Person Successfully!---------------");
}
}
// Load Person
public void testLoadPerson(){
Session session=null;
try {
session = HibernateUtils.getSession();
session.beginTransaction();
Person person = (Person)session.load(Person.class, "402881e4226f5e4601226f5e48370001");
System.out.println("Person Name: "+ person.getName());
System.out.println("Card NO: "+ person.getIdCard().getCardNo());
session.beginTransaction().commit();
} catch (Exception e) {
e.printStackTrace();
session.beginTransaction().rollback();
}finally{
HibernateUtils.closeSession(session);
}
}
// Load IdCard
public void testLoadIdCard(){
Session session=null;
try {
session = HibernateUtils.getSession();
IdCard idCard = (IdCard)session.load(IdCard.class, "402881e42274ae8a012274ae8bf00001");
System.out.println("Card ID: "+ idCard.getCardNo());
System.out.println("Person Name: "+ idCard.getPerson().getName());
session.beginTransaction().commit();
} catch (Exception e) {
e.printStackTrace();
session.beginTransaction().rollback();
}finally{
HibernateUtils.closeSession(session);
}
}
// Find PersonById
public void testPersionById(){
Person person = PersonManager.findPersonById("402881e4226f5e4601226f5e48370001");
System.out.println("Person Name: "+ person.getName());
System.out.println("Card NO: "+ person.getIdCard().getCardNo());
}
// Delete person
public void testFindPersonAll(){
List<Person> list = HibernateUtils.find("Form person");
System.out.println("Person Name: "+ list.get(0).getName());
System.out.println("Card NO: "+ list.get(0).getIdCard().getCardNo());
}
/**
*
* ======================================================================================
*
*/
// Get Person
private Person getPerson(){
IdCard idCard = new IdCard();
idCard.setCardNo("210803197903251016");
Person person = new Person();
person.setName("aaa");
person.setIdCard(idCard);
return person;
}
}
-------------------------------------------------------------------------------------------------------
以前这些方法都好用的,现在都不好用了。
请高手指教 谢谢!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货