我正在努力使用基于实体的复合主键映射一对多双向关系。我创建了一些代表我想做的类。它们只是制作出来的,因此更容易解释,但我认为它们传达了我正在努力做好的事情。
我没有实现一些接口/方法,但我可以确保当我不将锦标赛集添加到 Player/Game 实体时它可以工作。所以我的映射有问题。
当我试图找到一个实体(几乎做任何事情)时,Hibernate 4.x 会导致一个空标识符错误,而不再说明该错误。
当我在“一个”上有一个复合主键并且我想要双向导航时,映射它的正确方法是什么?
@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
}