Сопоставление поиска в базе данных с сущностями jpa - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть следующие таблицы базы данных: поиск и сотрудник.

Таблица поиска: структура с образцами данных.

class_name      value        description
GENDER_CODE       1          Male
GENDER_CODE       2          Female
BANK_CODE         1          HSBC
BANK_CODE         2          CityBank

Таблица сотрудников: структура с образцами данных.

id       name      gender_code     bank_code
1        Yusuf         1               1
2        Maher         1               2
3        Suzan         2               1

Каков наилучший способ сопоставить их с сущностями JPA?

Я попытался сопоставить абстрактный класс с таблицей поиска и использовать столбец class_name в качестве дискриминатора для подклассов Gender и Bank и ссылаться на банки пол как ManyToOne в объекте employee .. но я получаю исключение приведения класса, когда gender_code и bank_code имеют одинаковое значение.

Я пытался создать представления gender_lookup и Bank_lookup и сопоставить их непосредственно с сущностями.Снова гибернация жалуется, что не может найти стол с таким именем.

1 Ответ

0 голосов
/ 04 февраля 2019

Я бы попытался отобразить таблицу поиска как n + 1 разделенных сущностей, одно абстрактное и n дочерних.

Отображенный суперкласс должен иметь наследование SINGLE_TABLE, а дочерние классы должны объявлять дискриминатор.

Как то так:

@MappedSuperclass
@DiscriminatorColumn(name = "class_name")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
public abstract class LookupTable{

    @Id
    private Long vale;

    @Column(nullable = false)
    private String description;

    // Getters and setters
}

@Entity
@DiscriminatorValue("GENDER_CODE")
public class GenderCode extends LookupTable() {

}


@Entity
@DiscriminatorValue("BANK_CODE")
public class BankCode extends LookupTable() {

}

@Entity
public class Employee{

    @Id
    private Long id;

    @Column(nullable = false)
    private String name;

    @Column(nullable = false)
    private GenderCode genderCode;

    @Column(nullable = false)
    private BankCode bankCode;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...