如果使用Hibernate不为null,则在表中插入属性

时间:2018-05-30 19:50:14

标签: java database spring hibernate annotations

我将映射类定义为:

@Table(name = "TEST_TABLE")
public class DBTestAccount
{
    @Id
    @Column(name = "UUID", nullable = false, length = 36)
    private String uuid;

    @Column(name = "REGION")
    private String region;

    @Column(name = "COUNTRY")
    private String countryCode;

    //getters and setters
}

现在我需要更新表格。为此,我想创建以下对象:

DBTestAccount dbTestAccount = new DBTestAccount();
dbTestAccount.setUuid("testUUID");
dbTestAccount.setRegion("testRegion");
dbTestAccount.setCountryCode(null);

现在让我们说最初在表中我们有一个值为COUNTRY的记录。插入上述对象将替换该值并使COUNTRY为null。我希望它应该更新数据,但如果列为null,那么它应该忽略并且不更新它。如果它是非null,那么它应该更新它。如何在hibernate中实现这一点?有注释吗?如果没有那么可能的解决方案是什么(使用if - else除外)。我可以为此创建自定义注释吗?

PS: 底层数据库是PostgreSQL。

1 个答案:

答案 0 :(得分:0)

您描述的示例不能出现在数据库中,因为该对象还不是实体,因为它是使用new关键字创建的,并且它还没有在数据库中保留。

根据您的解释,我得到的是,您只想保存更改的属性。为此,hibernate具有Dynamic Update注释。