【问题标题】:How do I describe a bridge table to Ebean?如何向 Ebean 描述桥接表?
【发布时间】:2013-11-08 02:21:14
【问题描述】:

假设我有这些表:

订单:身份证 项目:身份证 ORDER_ITEM: order_id, item_id

表:ORDER_ITEMORDERITEM 之间的桥接表。

如何向Ebean 描述这三人组?

我不希望使用原始 SQL,以便我仍然可以创建和更新这些实体。

更新 2013 年 11 月 9 日星期六 02:32:40 UTC

好的,让这个问题变得更难,更能代表我的实际情况。列名不符合约定:

订单:order_number 项目:item_number ORDER_ITEM:我的订单,我的项目

【问题讨论】:

    标签: java jpa playframework ebean playframework-2.2


    【解决方案1】:

    您不必自己创建特殊的桥接表,除非您想在其中拥有除外键之外的其他字段。

    在 Order 类中你应该定义字段:

    @ManyToMany
    public List<Item> items;
    

    在物品类中:

    @ManyToMany(mappedBy = "items")
    public List<Order> orders;
    

    Ebean 会为你生成桥接表。

    此外:

    两个类之间可以有不对称的关系类型:

    @ManyToMany
    @JoinTable(name="Order_Item")
    public List<Item> items;
    

    @ManyToOne
    public Order order;
    

    如果 orderItem 中的可选字段,并且您不希望 Item 表中有很多空字段。

    更新:

    这对你有用。所有的表名和列名现在都由注释显式命名:

    @Entity
    @Table(name="ITEM")
    public class Item extends Model {
        @Id
        @Column(name="item_number")
        public Integer id;
    
        @ManyToMany(mappedBy = "items")
        public List<Order> orders;
    }
    

    @Entity @Table(name="ORDER") public class Order extends Model {
        @Id
        @Column(name="order_number")
        public Integer id;
    
        @ManyToMany
        @JoinTable(name="ORDER_ITEM",
                joinColumns=@JoinColumn(name="my_order",referencedColumnName = "order_number"),
                inverseJoinColumns = @JoinColumn(name="my_item", referencedColumnName="item_number"))
        public List<Item> items; }
    

    代码在这里:https://github.com/cosmolev/BridgeTable/tree/master/app/models

    【讨论】:

    • 我正在尝试向 Ebean 描述一个桥接表。桥接表已经存在。这是一个现有的数据库,我正在尝试在其上构建一个游戏应用程序。
    • 这就是Ebean中桥接表的描述方式。不要忘记禁用进化,否则 Ebean 会尝试从头开始生成所有内容,而不是使用您现有的数据库。
    • 我实际上会在空数据库上进行一些测试,看看 Ebean 会产生什么模式。一旦架构与您现有的架构相同 - 切换到原始数据库。
    • 好的,我想我的问题是我认为我只需要两个类:Order 和 Item,并且会有 JPA 注释来描述桥接表。但是现在我认为这是不可能的,我需要为桥表类编写一个类?
    • 查看您现有的桥接表。除非桥表中除了两个外键之外还有其他字段,否则只使用两个类是可能的。现在有多少个字段?
    猜你喜欢
    • 1970-01-01
    • 2013-02-27
    • 1970-01-01
    • 2016-08-09
    • 2016-04-14
    • 2021-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多