在插入行之前验证Postgres表中的现有值

时间:2017-01-30 09:20:37

标签: java postgresql hibernate jpa

我正在使用JPA和Hibernate连接到表并在其中插入数据。我有一个表说:用户有三列ID,名称和地址。我有一个相同的实体类,并插入数据我只是使用EntityManager的对象并将数据保存在数据库中,这对我来说就像一个魅力。

现在我有一个场景,我想检查我持久存在的值是否已经存在,如果是这种情况我必须记录错误。目前我正在做的是手动加载表中的行并手动检查是否存在相同的值,这对于只有三列的示例表(User)来说相当简单。但是如果我有一个包含30列的表呢?

我是否根据一个条件手动加载数据并检查其他列,或者有更好的和简短的方法吗?

1 个答案:

答案 0 :(得分:0)

30列,是你的主键吗?如果要检查复制的数据是主键或唯一约束,则可以使用Hibnerate在保存之前获取对象,如果存在则报告回来。如果30列不是键的一部分,那么我将使用equals方法,并因此获取所有行。但是如果有很多行,这会很慢,那么我可能会编写一个专用的SQL来检查对象存在的位置,即

UserDao public boolean rowExists(User user) { ... }