根据我的要求,我有一个Rate Master表,其中定义了一些标准明智的汇率。这是静态表,不会在交易基础上更改。现在,每当用户向系统注册时,他们就订阅特定的计划(费率),并且在订阅表中,我们将存储用户详细信息以及他们选择的费率订阅。
**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,一切都按预期工作,但是当我在Subscription pojo中进行关系时,系统迫使我将insertable = 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;
提前致谢。
最佳答案
Hibernate坚持使用insertable=false,updatable=false
,因为rateId
字段映射到与与RateMaster
实体的关系用作联接列的同一列。这样就引入了冗余,并且Hibernate无法保证保留通过该冗余引入的任何不一致的数据。
我的建议是完全放弃rateId
字段。通过分配给每个RateMaster
的Subscription
实体管理基础列。如有必要,请在Subscription
上引入一个只读的非持久性访问器,该访问器通过从rateId
获取它来提供RateMaster
。
关于java - 使用静态表 hibernate 一对一映射,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50497941/