gpt4 book ai didi

java - 同一数据插入时没有 Hibernate 异常

转载 作者:行者123 更新时间:2023-12-01 15:58:28 25 4
gpt4 key购买 nike

这里是 hibernate 新手。我很不确定为什么当我执行下面的代码时没有收到任何异常。第一次尝试时,此代码在我的图书表上创建图书条目。 但我担心的是,当我再次执行下面的代码时,Hibernate 没有弹出任何错误。事实上,我期待着某种违反主键约束的情况,就像我在 JDBC 中所做的那样代码。

public class BookDao {
public void createBook(Book bookObj) {
Session session = HibernateUtil.getSessionFactory()
.getCurrentSession();
session.beginTransaction();
session.saveOrUpdate(bookObj);
session.getTransaction().commit();
}
}

public class HibernateUtil {
private static final SessionFactory sessionFactory = buildSessionFactory();

private static SessionFactory buildSessionFactory() {
try {
// Create the SessionFactory from hibernate.cfg.xml
return new AnnotationConfiguration().configure()
.buildSessionFactory();
} catch (Throwable ex) {
// Make sure you log the exception, as it might be swallowed
ex.printStackTrace();
throw new ExceptionInInitializerError(ex);
}
}

public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}

public class BookDBStarter {
public static void main(String[] args) {
Book bookHF = new Book();
bookHF.setIsbn("HF-12345");
bookHF.setName("Head First HTML");
bookHF.setPublishDate(new Date());

BookDao daoBook = new BookDao();
daoBook.createBook(bookHF);
}
}

这是正常的 hibernate 方式吗?我如何知道我的插入是否成功?有什么想法吗?

最佳答案

让我们假设 booknumber 是主键,我希望您将其作为主键提及。然后在 createBook() 方法中您开始得很好,但您使用了 session.saveOrUpdate( bookObj); 声明。因此,您不会收到任何类型的 key 违规异常。在保存时,它会查找记录,如果它不存在,那么它将把它保存在数据库中,但如果它存在,那么它将更新该记录,因此您不会收到任何类型的异常。相反,如果您使用 session.save(bookObj);那么如果你正确定义主键,它肯定会给你主键异常。

关于java - 同一数据插入时没有 Hibernate 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4525997/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com