У меня есть приложение, которое использует JPA и Hibernate. У меня есть объект Person с несколькими полями, для которых я хотел бы использовать таблицы поиска. Например, есть пол, который [я считаю] должен выглядеть следующим образом:
@Entity
@Table(name = "genderLookup")
@EntityListeners(AuditingEntityListener.class)
public class GenderLookup extends Auditable<String> implements Serializable {
@Id
private Long id;
@Column(name = "genderName", nullable = false)
private String genderName;
@Column(name = "genderCode", nullable = false)
private String genderCode;
// Default empty public constructor
public GenderLookup() {
}
public String getGenderName() {
return genderName;
}
public void setGenderName(String genderName) {
this.genderName = genderName;
}
public String getGenderCode() {
return genderCode;
}
public void setGenderCode(String genderCode) {
this.genderCode = genderCode;
}
}
Для охвата этих полов:
// "Gender","Code"
// "Male","M"
// "Male Impersonator","G"
// "Female","F"
// "Female Impersonator","N"
// "Unknown","X"
// "Male Name, No Gender Given","Y"
// "Female Name, No gender Given","Z"
Это мой текущий Person
объект:
@Entity
@Table(name = "person")
@EntityListeners(AuditingEntityListener.class)
public class Person extends Auditable<String> implements Serializable
{
@Column(name = "gender", nullable = false);
private String gender;
public Person(){
}
public Person(Object object){
this.gender = object.getGender();
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
}
В настоящее время, как вы можете видеть, пол передается в Person в конструкторе и задается таким образом. Как я уже сказал, я бы предпочел использовать справочную таблицу, но у меня очень мало опыта JPA и я не знаю, что я делаю.
Я пробовал это в моей Person
сущности:
@OneToOne(fetch = FetchType.EAGER, optional = false)
@JoinColumn(name = "genderCode", nullable = false, insertable = false, updatable = false)
private String gender;
но это не сработало.
Как мне заставить это работать?