我有 entity 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检查我试图添加的项目之类的东西是否是数据库。但这需要从数据库中进行额外的选择,我对此有点担心。