JPA 2.0 - 嵌入式 Id,manytoone 不持久

JPA 2.0 - embedded Id, manytoone not persisted

我有 2 个实体(下面是简化版):

@Entity
Client
@Id protected String id;

@OneToMany(mappedBy = "sender", cascade = CascadeType.ALL)
protected List<Message> sentMessages = new ArrayList<>();

@Embeddable
MessagePK
@ManyToOne(/*cascade = CascadeType.ALL*/)
protected Client sender;
protected LocalDate dateTime;

@Entity
Message
@EmbeddedId protected MessagePK id;
@Column protected String message;

当我尝试保留消息时,它会抱怨客户端是一个临时实例。

所以,我尝试在那里放置一个级联操作,但这也没有用(现在已被注释掉)。

我好像想不通。

您不能在@Embeddable 中建立关系(如@ManyToOne)。 因为可嵌入对象没有自己的标识(缺少主键),所以它只需要被视为封装它的实体的一部分。从数据库的角度来看,嵌入式对象与其余实体属性一起存储在一行中。

您可以使用@IdClass 注释来创建复合键sender/datetime 见:https://wiki.eclipse.org/EclipseLink/Examples/JPA/2.0/DerivedIdentifiers