自从更新到Sping Boot 3.1.4后,我在mappedBy和EmbeddedId上遇到了一个问题。它适用于所有以前的Sprint Boot 版本。下面是一个例子:
具有mappedBy到EmbeddedId的实体:
@Entity
@Getter
@Setter(AccessLevel.PROTECTED)
@Table(name = "STATUS")
public class Status {
@Id
private String id;
@OneToMany(mappedBy = "id.globalId")
private List<StatusLabel> labels;
}
具有EmbeddedId的实体:
@Entity
@Getter
@Setter(AccessLevel.PROTECTED)
@Table(name = "STATUS_LABELS")
public class StatusLabel {
@EmbeddedId
private LabelGlobalId id;
private String labelname;
private String shortname;
}
EmbeddedId:
@Embeddable
@Getter
@Setter(AccessLevel.PROTECTED)
public class LabelGlobalId implements Serializable {
private String globalId;
private String langId;
}
2条答案
按热度按时间hivapdat1#
要Map一个id或嵌入的id,应该使用
@MapsId
。我怀疑关系中的mappedBy
是偶然发生的,而不是故意的。另请参阅文档中的相关部分。
像这样的东西应该可以。
goqiplq22#
如果要解决此问题,需要修改
Status
实体中的mappedBy
属性: