我将映射类定义为:
@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。
答案 0 :(得分:0)
您描述的示例不能出现在数据库中,因为该对象还不是实体,因为它是使用new关键字创建的,并且它还没有在数据库中保留。
根据您的解释,我得到的是,您只想保存更改的属性。为此,hibernate具有Dynamic Update注释。