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