【发布时间】:2022-11-13 07:28:20
【问题描述】:
所以我有一个预先存在的具有多个 OneToMany 关系的服务实体。现在我需要再添加一个,但我遇到了麻烦,我认为这一定是因为 Many 端使用了复合键。
我有带有新字段的 Service.java
@Column(name = "TRANSLATION_DV_ID")
private String translationDvId;
@OneToMany(cascade = CascadeType.All, fetch = FetchType.Eager, mappedBy = "service")
private List<Translation> translation;
和
@IdClass(TranslationId.class)
public class Translation {
@Id
@Column(name = "TRANSLATION_DV_ID")
private String translationDvId;
@Id
@Column(name = "LOCALE_CD")
private String localeCd;
@Column(name = "TRANSLATED_NAME")
private String translatedName;
@Column(name = "TRANSLATED_DESC")
private String translatedDesc;
@ManyToOne
@JoinColumn(name = "TRANSLATION_DV_ID", insertable = false, updatable = false)
private Service service;
测试数据是用 sql 脚本生成的。我输入了新数据并匹配了 translationDvId。除了翻译关系之外,所有数据都包含正确的信息——每个服务总是有一个空的List<Translation>。
我不确定我错过了什么,但这里是一个数据输入的例子
INSERT INTO SCHEMA.SERVICE(SERVICE_CD, TRANSLATION_DV_ID, etc, etc)
VALUES ('servicePrimaryKey', '12345', 'etc, 'etc);
INSERT INTO SCHEMA.TRANSLATION(TRANSLATION_DV_ID, LOCALE_CD, TRANSLATED_NAME, TRANSLATED_DESC)
VALUES ('12345', 'English', 'Guardian', 'Cool stuff');
INSERT INTO SCHEMA.TRANSLATION(TRANSLATION_DV_ID, LOCALE_CD, TRANSLATED_NAME, TRANSLATED_DESC)
VALUES ('12345', 'Spanish', 'Guardia', 'Cosas interesantes');
【问题讨论】:
标签: java spring-data-jpa composite-primary-key