gpt4 book ai didi

java - 违反约束时静默失败

转载 作者:行者123 更新时间:2023-12-01 15:07:24 26 4
gpt4 key购买 nike

我有实体Foo,它映射到带有一些唯一约束的sql表。因此保存 Foo 可能会失败。我正在使用 FooDao 保存 Foo:

@Repository
public class FooDao
{
@Autowired
private SessionFactory sessionFactory;

@Transactional
@Override
public void add(Foo item) {
sessionFactory.save(item);
}
}

当我调用方法 FooDao#add(Foo) 时,它可能会因两个原因而失败:要么因为违反唯一约束(在这种情况下,我知道如何处理问题),要么因为某些原因其他问题(在此我可能应该传播异常)。如何区分这两种情况?

我可以将方法 find(Foo item) 添加到 FooDao 并检查我试图添加的 item 之类的内容是否是数据库。但这需要从数据库中进行额外的选择,我对此有点担心。

最佳答案

这实际上是 SQLState。

做这样的事情

Catch(HibernateException he){
SQLException sqe = he.getSQLEception();
String sqlState = sqe.getSQLState();
if(sqlState.equals("23000"){
// Handle your exception
}
}

Java 文档:SQLState - 标识异常的 XOPEN 或 SQL:2003 代码

我找到了 ISO sqlStates 的一个链接,

link to reference

但要寻找准确的引用和值(value)..

关于java - 违反约束时静默失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12800503/

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