Java 使用静态表休眠一对一映射

Java 使用静态表休眠一对一映射,java,hibernate,Java,Hibernate,根据我的要求,我有一个费率主表,其中定义了一些标准费率。这是一个静态表,不会在事务基础上更改。现在,每当用户注册到系统时,他们都会订阅特定的计划(费率),我们会在订阅表中存储用户详细信息以及他们选择的费率订阅 **Table Details:** **Rate Master Table -** rate_id- INT -Auto generated. Amount - INT **Subscription table -** ID - INT -Auto generated. User_

根据我的要求,我有一个费率主表,其中定义了一些标准费率。这是一个静态表,不会在事务基础上更改。现在,每当用户注册到系统时,他们都会订阅特定的计划(费率),我们会在订阅表中存储用户详细信息以及他们选择的费率订阅

**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中处理关系时,系统强制我将insertable=false、updateable=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;

提前感谢。

Hibernate坚持
insertable=false,updateable=false
,因为
rateId
字段映射到与
RateMaster
实体的关系中用作联接列的同一列。因此引入了冗余,Hibernate不能保证保留通过该冗余引入的任何不一致的数据


我的建议是将
rateId
字段全部删除。通过分配给每个
订阅的
RateMaster
实体管理基础列。如有必要,在
Subscription
上引入一个只读、非持久访问器,通过从
RateMaster
获取
rateId

来提供
rateId

如果我完全放弃rateId字段,那么Subscription.java中RateMaster的映射是什么。第二,如前所述,RateMaster将是只读的。这意味着订阅表将被更新,但RateMaster将保持不变。不,@Souvik。不要放弃
rate\u id
列。仅删除实体类中的
rateId
字段。该列已通过实体关系映射。这就是我所说的冗余的全部性质。如果您不想修改
RateMaster
s,那么只需避免在该类上提供属性设置器即可。谢谢您的帮助。现在我可以获取带有费率详细信息的SubscriptionDetails。但我对插入有点困惑。由于其他一些业务逻辑,我无法从RateMaster中删除setter。那么,如何处理RateMaster表不会在系统中更新而只有Subscription表会更新的问题呢。还要注意,订阅表包含映射的RateId。所以,也需要保存相同的。对于关系,现在我使用OneToOne&PrimaryKeyJoinColumn