我对数据库中对象的历史化存在问题。
保存JpaRepository方法的预期行为是:插入在两个表 idt_h 和 abo_h
< / li>但是当前行为是 idt_h 表中的插入和 abo_h 表中的 update
@Data
@Entity
@Table(name = "ABO_H")
@AllArgsConstructor
@NoArgsConstructor
public class AboOP {
@Id
@Column(name = "ABO_ID")
private String id;
@Column(name = "ABO_STATUT")
private String statut;
@Column(name = "ABO_DATE_STATUT")
private Instant date;
@Column(name = "ABO_CoDE")
private String code;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumns({
@JoinColumn(name = "IDC_ID", referencedColumnName = "IDC_ID"),
@JoinColumn(name = "DATE_HISTO", referencedColumnName = "DATE_HISTO")
})
private IdtOP idtOP;
}
@Data
@Entity
@Table(name = "IDT_H")
@AllArgsConstructor
@NoArgsConstructor
public class IdtOP {
@AttributeOverrides({
@AttributeOverride(name = "id",
column = @Column(name = "IDC_ID")),
@AttributeOverride(name = "dateHisto",
column = @Column(name = "DATE_HISTO"))
})
@EmbeddedId
private IdGenerique idtId = new IdGenerique();
//Other fields
}
@Data
@AllArgsConstructor
@NoArgsConstructor
@Embeddable
public class IdGenerique implements Serializable {
private String id;
private Instant dateHisto;
}
我认为表 abo_h 不能很好地调用将 id 和 dateHisto 分组的类 IdGenerique > ??
预先感谢
答案 0 :(得分:0)
使用save()方法时,entityManager将检查该实体是否为新实体。如果是,则将保存该实体,否则将被合并
如果使用接口Persistable实现实体类,则可以重写isNew()方法并使它返回True。在这种情况下,save()方法将持久存在,而不是合并到您的实体。