Hibernate / JPA - вставка поля, только если существует в таблице - PullRequest
0 голосов
/ 25 октября 2019

Я ищу ответ, если это возможно или нет в спящем режиме. Я пытаюсь добиться того, чтобы в определенной таблице существовало поле, тогда только оно должно вставлять его. Иначе просто игнорируйте поле в классе @Entity.

Я хочу, чтобы это поле появилось в одной из таблиц, которые мы используем, и есть много зависимых компонентов, которые прямо сейчас вставляют данные в эту таблицу. Таблица. Я не хочу выпуск большого взрыва. Хотите, чтобы что-то подобное не влияло на старую версию, а также на то, когда происходит обновление и вводится новый столбец, тогда это также должно работать.

Например -

 @Entity
    @Table(name = "EMPLOYEE_RECORDS")
    public class Employee
    {
        @Id
        @Column(name = "employee_id")
        private Integer employeeId;

        @Column(name = "employee_name")
        private String employeeName;

        @Column(name="address")
        private String address;
}

Что если явставлять поле адреса в БД можно только в том случае, если в таблице EMPLOYEE_RECORDS существует столбец (адрес). Пожалуйста, прости меня, если это что-то очевидно, так как я не очень опытен в Hibernate.

Также позвольте мне объяснить, что я подумаю (но не уверен, что это также будет работать) -
1. Создать2 разных класса @Entity. Попробуйте вставить, и если вставка завершилась неудачно, во время выполнения переключите @Entity и используйте без адреса.
2. Проверьте, существует ли поле в таблице, простым запросом, если оно не удается, используйте @Entity без адреса, иначе используйте без адреса.

1 Ответ

0 голосов
/ 25 октября 2019

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

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

...