我很努力根据实体映射与复合主键的一对多双向关系。我创建了一些代表我想要做的事情的类。他们只是为了更容易解释,但我认为他们表达了我想要做的很好。与复合实体关键的双向OneToMany关系导致空标识符
我没有实现一些接口/方法,但是我可以确保它在我不将一组比赛添加到玩家/游戏实体时起作用。所以我的映射有些问题。
当我试图找到一个实体(几乎可以做任何事情)时,Hibernate 4.x会产生一个空标识符错误,并且没有更多关于错误的信息。
当我在“one”上有一个复合主键并且我想要双向导航时,映射此映射的正确方法是什么?
@Entity
@IdClass(TournamentPk.class)
public class Tournament {
@Id
@ManyToOne
@JoinColumn("player_id")
private Player player;
@Id
@ManyToOne
@JoinColumn("game_id")
private Game game;
private int score;
// Getters and Setters
// Hashcode and Equals
}
// Primary key class.
public class TournamentPk {
private Player player;
private Game game;
// Getters and Setters
// Hashcode and Equals
}
@Entity
public class Player {
// ID
// Other fields
@OneToMany(fetchType = FetchType.EAGER, mappedBy = "player")
private Set<Tournament> tournaments;
// Getters and Setters
// Hashcode and Equals
}
@Entity
public class Game {
// ID
// Other fields
@OneToMany(fetchType = FetchType.EAGER, mappedBy = "game")
private Set<Tournament> tournaments;
// Getters and Setters
// Hashcode and Equals
}
尝试使用'@ EmbeddedId',而不是'@ IdClass' – Simon
你能提供确切的异常信息?当你尝试找到什么类型的实体时会发生错误? –