我有一个创建数据库的任务,在那里我可以存储有关货币出价的信息并询问特定日期的值。我的实体只有很少的字段,其中两个是currencyType(enum USD,EUR等)和currencyDate(LocalDate)。它们都不应该是唯一的,但它们的合并应该是(我想使用query.uniqueResult()从数据库中获取货币)。这就是我使用的原因:
uniqueConstraints = @UniqueConstraint(columnNames = {"currencyType", "currencyDate"}))
我虽然每次尝试添加到数据库已经存在的currencyType和currencyDate组合时,数据库都会忽略查询,但它会给我一个错误,例如:
ERROR: Duplicate entry '0-2017-10-27' for key 'UK56cur2s470vruol04nntdbl49'
其中,第一个0表示currencyType(在int中),其他部分是date。如何让hibernate以我想要的方式工作?我的意思是在它复制记录时传递查询?
答案 0 :(得分:0)
我知道获得您想要的行为的唯一方法是将这两个字段组合为Id
并使用merge
或saveOrUpdate
方法进行存储,但我不要以为它是好的设计。至于我,解决这个问题的最好方法是通过这两个值从db获取记录,如果存在则更新它,否则创建new。