Как мне создать справочную таблицу в моем приложении, используя JPA и Hibernate? - PullRequest
0 голосов
/ 23 апреля 2019

У меня есть приложение, которое использует 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;

но это не сработало.

Как мне заставить это работать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...