【发布时间】:2020-05-06 13:15:54
【问题描述】:
我想更新/插入一个实体,不依赖于主键,而是依赖于:
@Entity
@Data
@EqualsAndHashCode(onlyExplicitlyIncluded = true)
@Builder
class Alert {
@Id
@Basic(optional = false)
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private long id;
@Column(name = "field1")
@EqualsAndHashCode.Include
private String field1;
@Column(name = "field2")
@EqualsAndHashCode.Include
private String field2;
@Column(name = "field3")
@EqualsAndHashCode.Include
private String field3;
@Column(name = "last_occurrence")
@Temporal(TemporalType.TIMESTAMP)
private Date lastOccurrence;
}
Alert alert = Alert.builder().field1("foo").field2("bar").lastOccurence(new Date()).build();
如果存在 equals 警报(例如,使用 field1="foo"、field2="bar" 和 field3=null),我想更新其 lastOccurence,否则插入新警报。
(当然,我可以使用像 findByField1AndField2AndField3 这样讨厌的派生查询方法...)
【问题讨论】:
-
到目前为止你尝试了什么?
标签: java spring hibernate spring-data hibernate-mapping