我的代码有问题(很明显),并且在Internet上进行了许多搜索之后,我找不到我的问题的答案,因此在这里提出我的问题。
我有这个 :
@Entity
public class Resident
{
/** Attributes */
@EmbeddedId
private IdResident idResident;
...
@Embeddable
public class IdResident {
@Column(name="NOM")
private String nom;
@ManyToOne
@JoinColumn(name="CODE")
private Port port;
...
@Entity
public class Port
{
/** Attributes */
@Id
@Column(name="CODE")
private String code;
@Column(name="NOM")
private String nom;
...
我正在使用Maven,我已经在persistence.xml中编写了此代码:
<class>beans.Port</class>
<class>beans.Resident</class>
但是,当我运行该程序时,无论我写了什么,我都有:
Exception Description: The mapping [port] from the embedded ID class
[class beans.IdResident] is an invalid mapping for this class. An embeddable class that
is used with an embedded ID specification (attribute [idResident] from the source
[class beans.Resident]) can only contain basic mappings. Either remove the non
basic mapping or change the embedded ID specification on the source to be embedded.
我看不出我的错误在哪里,我认为这是因为IdResident类中有一个Entity对象,但我不知道该怎么办
最佳答案
您收到的错误消息对此进行了很好的解释,用作嵌入式ID的Embeddable只能包含基本映射,而不能包含关系。在JPA 2.0规范中,这是用以下单词来告知的:
只需定义作为可嵌入ID的可嵌入对象中的复合ID的一部分的属性,然后在实体本身(或在另一个可嵌入对象中并包含带有@Embedded的映射)中映射关系。