求助!在Hibernate的TestUnit中插入对象时报错:“Caused by: java.sql.SQLException: 违反了 PRIMARY KEY 约束'PK_book'。不能在对象 'b

leafxx 2005-04-14 06:49:33
使用Middlegen-Hibernate-r5,hbm2java.bat生成的.hbm.xml和Java文件

但在Hibernate的TestUnit中插入对象时报错:
“Caused by: java.sql.SQLException: 违反了 PRIMARY KEY 约束'PK_book'。不能在对象 'book' 中插入重复键。”

下面是我的代码:
/*
* Created on 2005-3-20 dahe
*/
package org.hibernate.sample;

import java.util.List;

import net.sf.hibernate.*;
import junit.framework.*;
import org.hibernate.sample.Book;
import net.sf.hibernate.cfg.*;

public class HibernateTest extends TestCase {
Session session = null;
protected void setUp() {
try {
Configuration config = new Configuration().configure();
SessionFactory sessionFactory = config.buildSessionFactory();
session = sessionFactory.openSession();
} catch (HibernateException e) {
e.printStackTrace();
}
}

protected void tearDown() {
try {
session.close();
} catch (HibernateException e) {
e.printStackTrace();
}
}

public void testInsert() {
try {
Book book = new Book();
book.setBook("newbook"); //已经换了几次不同的名称,仍然说是重复插入
book.setSn("aaa");
Transaction tran=session.beginTransaction();
session.save(book);
tran.commit();
} catch (HibernateException e) {
e.printStackTrace();
Assert.fail(e.getMessage());
}
}

public void testSelect() {
String hql = "FROM Book where book='Hibernate'";
try {
List bookList = session.find(hql);
Book theBook = (Book) bookList.get(0);
Assert.assertEquals(theBook.getBook(), "Hibernate");
} catch (HibernateException e) {
e.printStackTrace();
Assert.fail(e.getMessage());
}
}

}

-------------------------------------------------------------------------------------------------------


book的名称 和 sn都换了不同的名称,怎么会是重复插入呢?
是不是Book.hbm.xml 或者 hibernate.cfg.xml的配置有问题呢?
...全文
131 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
leafxx 2005-04-17
  • 打赏
  • 举报
回复
up
Vincent2013SH 2005-04-15
  • 打赏
  • 举报
回复
Book book = new Book();
你在new这个Book对象时,他的主键默认值是多少?配置文件里主键unsaved-value是多少?两者应该相同

单元测试杂写成这样?
plusjava 2005-04-15
  • 打赏
  • 举报
回复
实现不行把数据库里的索引删除了先,要不在管理索引把忽略重复值那个复选框勾上试下
leafxx 2005-04-15
  • 打赏
  • 举报
回复
up

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧