java.util.List未映射为可嵌入的

时间:2013-11-23 18:19:38

标签: java java-ee jpa java-ee-6

我有一个包含2个类的设计模型:GameHighscore。它们之间的关系是:游戏可以有0或许多高分。所以,我正在尝试将类Highscore定义为@Embeddable并在游戏I中写道:

@Embedded
private List<Highscore> highscores = new ArrayList<Highscore>();

问题是我从Eclipse中收到以下错误:java.util.List is not mapped as an embeddable

有人知道可以做些什么吗?

游戏:

@Entity
@Table(name="games")
public class Game {

    @Id
    private String name;

    @Column(name="highscore_table_size")
    private Integer highscoreTableSize;

    private String url;

    @Embedded
    private List<Highscore> highscores = new ArrayList<Highscore>();

    ...
}

排行榜:

@Embeddable
public class Highscore {

    private String playerName;

    private Date date;

    private int score;

    // getters and setter
}

编辑:我也遇到了来自Eclipse的Table xyz cannot be resolved错误,并且在搜索解决方案时,我找到了this,关闭了针对Build的JPA验证器也做了诀窍这篇文章中提到的错误。

2 个答案:

答案 0 :(得分:1)

您应该使用@ElementCollection

摘自文件:

  

定义基本类型或可嵌入类的实例的集合。   如果要通过a映射集合,则必须指定   收集表。

答案 1 :(得分:0)

您应该拥有OneToMany关联,而不是Embedded。

Embedded用于将对象的字段存储在与其拥有实体的字段相同的表中。将它与List一起使用是没有意义的。

HighScore必须是具有ID的实体,并且您必须在两个实体之间建立OneToMany关联。