【发布时间】:2020-07-13 04:26:01
【问题描述】:
我对数据库中对象的历史记录有疑问。
-
save JpaRepository 方法的预期行为是:Insert 在两个表 idt_h 和 abo_h
但当前的行为是 idt_h 表中的 Insert 和 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;
}
我认为 id 和 dateHisto 分组的类 IdGenerique 没有很好地为表 abo_h 调用> ??
提前致谢
【问题讨论】:
-
如果你有多个 B 到一个 A,为什么不在 TableB 中设置一个外键呢?我没有得到你想用@JoinColumns 实现的目标?
-
因为我在 A 类中使用了复合主键(id A, date_histo),而我在 B 类中需要这个键,因此有兴趣加入。
标签: spring-boot spring-data-jpa