我的代码有问题(很明显),并且在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的映射)中映射关系。

10-04 19:55