gpt4 book ai didi

java - Hibernate 与静态表一对一映射

转载 作者:行者123 更新时间:2023-12-02 11:12:50 25 4
gpt4 key购买 nike

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

**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,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 不能 promise 保留您通过该冗余引入的任何不一致数据。

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

关于java - Hibernate 与静态表一对一映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50497941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com