Заполнить таблицу enum с помощью JPA

199
10 февраля 2020, 05:50

Есть два класса enum и класс содержащий его как атрибут.

public enum Grade {
    _1("1"),
    _2("2"),
    _3("3"),
    _7bPLUS("7b+"),
    _7c("7c"),
    _7cPLUS("7c+"),
    _8a("8a"),
    _8aPLUS("8a+"),
    _8b("8b"),
    _8bPLUS("8b+"),
    _8c("8c"),
    _8cPLUS("8c+"),
    _9a("9a"),
    _9aPLUS("9a+"),
    _9b("9b"),
    _9bPLUS("9b+"),
    _9c("9c");
    private String name;
    Grade(String name) {
        this.name = name;
    }
    @Override
    public String toString() {
        return name;
    }
}

Связь между ними многие к одному, то есть множество экземпляров Itinerary могут иметь один уровень Grade

import javax.persistence.*;
@Entity
public class Itinerary {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    @Column(nullable = false)
    private String name;
    @Column(length = 1000)
    private String description;
    private Integer length;
    @ManyToOne(fetch = FetchType.EAGER)
    private Sector sector;

    private Grade grade;
}

Можно ли как-то пометить аннотациями что-бы hibernate автоматически создавал таблицу Grade с полями id и name. И при этом заполнял ее. Так как создать не проблема, я просто мой enam делаю @Entity добавляю id поле и ставлю над атрибутом в классе аннотацию @ManyToOne. Но таблица grade при этом остается пустой, хотя мне ведь известны ее значения с самого начала.

Можно ли ее заполнить при старте?

Answer 1

Самым простым решением в данном случае будет не создавать новой таблицы вовсе.

Хотя это и формально нарушает правила для 3-ей нормальной формы, в данном случае соображения практичности перевешивают.

Если же действительно нужна таблица, то с энумом это работать не будет.

Придется создать полноценную сущность и написать бин который при старте будет проверять содержимое таблицы и заполнять ее если требуется.

READ ALSO
Почему у java нет парсера собственного кода?

Почему у java нет парсера собственного кода?

Сразу скажу, что знаю, есть, Javaparser проект, но он от сторонних разработчиковЯ просто не могу понять если java компилируется в байт-код из исходников,...

209
Чем proxy через BeanPostProcessor отличается от AOP?

Чем proxy через BeanPostProcessor отличается от AOP?

Не могу понять, чем прокси класс который создается, когда я в BeanPostProcessor добавляю какую-нибудь логику после инит метода отличается от того...

220
Не компилируется JavaFX приложение

Не компилируется JavaFX приложение

Импортировал библиотеку, но приложение не компилируетсяКод исходный, я ничего не менял

167
Junit Spy Mockito Тестирование

Junit Spy Mockito Тестирование

Всем привет,учу java, есть задание протестировать с помощью Mockitospy void метод который вызывает другие методы

210