Отображение Hibernate один на один со статической таблицей - PullRequest
0 голосов
/ 24 мая 2018

В соответствии с моим требованием, у меня есть таблица Master Rate, в которой определены некоторые критерии оценки.Это статическая таблица, которая не изменяется в зависимости от транзакции. Теперь, когда пользователь регистрируется в системе, он подписывается на определенный тариф (тариф), а в таблице подписки мы сохраняем данные пользователя вместе с выбранной им тарифной ставкой.

**Table Details:**
**Rate Master Table -** 
rate_id- INT -Auto generated.
Amount - INT

**Subscription table -** 
ID - INT -Auto generated.
User_ID - VARCHAR - USER ID (No relation with user table)
Rate_Id - INT - RATE MASTER table ID (Though this only hibernate will fetch all the records of Rate)

Теперь, пожалуйста, помогите мне, как сделать это отображение на стороне Hibernate POJO.Для отдельных таблиц pojo все работает, как и ожидалось, но когда я выполняю отношения в подписке pojo, система заставляет меня отмечать: inserttable = false, updatable = false.Поэтому, пожалуйста, помогите мне с таблицей подписки POJO и обработайте это, не обновляя таблицу тарифов при каждом обновлении подписки.Примечание. Это отношение будет представлять собой однонаправленную таблицу подписки только для сопоставления тарифов.

@Column(name = "rate_id",insertable=false,updatable=false)
private int rateId;
@OneToOne(targetEntity = RateMaster.class, cascade = CascadeType.ALL)
@JoinColumn(name = "rate_id", referencedColumnName = "rate_id")
private RateMaster rateMaster;

Заранее спасибо.

1 Ответ

0 голосов
/ 24 мая 2018

Hibernate настаивает на insertable=false,updatable=false, поскольку поле rateId сопоставляется с тем же столбцом, который используется в качестве столбца соединения для связи с сущностью RateMaster.Таким образом, вы ввели избыточность, и Hibernate не может обещать сохранить какие-либо противоречивые данные, которые вы вводите через эту избыточность.

Я бы порекомендовал просто исключить поле rateId.Управляйте базовым столбцом с помощью объекта RateMaster, назначенного каждому Subscription.При необходимости введите непостоянный метод доступа только для чтения на Subscription, который предоставляет rateId, получая его от RateMaster.

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