Я изо всех сил пытаюсь успешно реализовать сопоставление OneToOne в моем приложении Play Framework.
примеры, которые у меня есть:
@Entity
public class Profile extends GenericModel {
@Id
@GeneratedValue(generator = "foreignGenerator")
@GenericGenerator(name = "foreignGenerator", strategy = "foreign",
parameters = @Parameter(name = "property", value = "user"))
public static int id;
@OneToOne(mappedBy="profile", cascade = {CascadeType.ALL})
public static User user;
}
и:
@Entity
public class User extends Model {
@Required
public String firstName;
@Required
public String surname;
}
в этой настройке выдает:
org.hibernate.AnnotationException: не указан идентификатор для объекта: models.Profile
РЕДАКТИРОВАТЬ : Согласно ответу Кристиана Боариу , я изменил профиль в соответствии с тем, что вы предложили, и пользователь:
@Entity
public class User extends GenericModel {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public Long user_id;
@Required
public String firstName;
@Required
public String surname;
@OneToOne(cascade = {CascadeType.ALL})
@PrimaryKeyJoinColumn(name = "user_id", referencedColumnName = "profile_id")
public Profile profile;
public Profile getProfile() {
return profile;
}
public void setProfile(Profile profile) {
this.profile = profile;
}
}
Также добавлен геттер / сеттер в профиль:
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
Но я сейчас получаю hibernate.id.IdentifierGenerationException: null id generated for:class models.Profile
.. не знаете, как исправить?