【问题标题】:OneToMany association using Foreign key in the OWNED entity在 OWNED 实体中使用外键的 OneToMany 关联
【发布时间】:2023-03-31 08:02:01
【问题描述】:

我正在尝试在对话实体和短信实体之间建立 OneToMany 关联。

我希望外键出现在对话表中。

Table_Conversation - id BIGINT - sms_id BIGINT FK 参考 SmsBean.id

这里是对话类

公共类对话{ //... @OneToMany(targetEntity=SmsBean.class, table="conversation") 公共列表 getSmsList() { 返回短信列表; } }

请注意,我不需要 Sms 类中的对话字段,因为我不需要它。

Hibernate 无法生成我的表并引发以下异常:

org.hibernate.cfg.NotYetImplementedException:在辅助表中具有 FK 的集合

我正在使用 Hibernate 3.5 / JPA2.0

你能帮忙弄清楚怎么做吗?

谢谢

【问题讨论】:

    标签: hibernate


    【解决方案1】:

    我的这个问题不正确。

    我希望外键出现在对话表中。

    Table_Conversation - id BIGINT - sms_id BIGINT FK 参考 SmsBean.id

    但是当同一个对话(id=123)有两条短信时会发生什么?这将导致两行具有相同的 id。

    Table_Conversation |---------------| |编号 | sms_id | |---------------| | 123 | 1001 | | 123 | 1002 | |---------------|

    所以我放弃了这个想法,现在我使用连接表作为休眠推荐的方式。

    【讨论】:

      【解决方案2】:

      试试这个:

      public class Conversation{
        //...
        @OneToMany
        public List<Sms> getSmsList() {
          return smsList;
        }
      }
      

      这将创建一个保存关系的表 Conversation_Sms。 如果您在 Sms 实体中添加了 Conversation 字段并向 OneToMany 注释添加了 mappedBy 属性,则不会创建此表。但是就像您说的那样,这不是您想要的..

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-01-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多