Я борюсь с отображением двунаправленной связи «один ко многим» с составными первичными ключами на основе entites. Я создал несколько классов, которые представляют, что я хочу делать. Они просто сделаны, поэтому их легче объяснить, но я думаю, что они сообщают, что я пытаюсь сделать хорошо.Двунаправленная связь OneToMany с составным ключом объекта вызывает нулевой идентификатор
Я упустил реализацию некоторых интерфейсов/методов, но я могу гарантировать, что он будет работать, если я не добавлю набор турниров в объект 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
}
Попробуйте использовать '@ EmbeddedId' вместо' @ IdClass' – Simon
могли бы вы предоставить точное сообщение исключение? Ошибка возникает, когда вы пытаетесь найти объект какого типа? –