9

假设我有这些表:

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

table:是和ORDER_ITEM之间的桥接表。ORDERITEM

我该如何形容这三人组Ebean

我宁愿不使用原始 SQL,这样我仍然可以创建和更新这些实体。

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

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

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

1 回答 1

19

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

在 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

于 2013-11-08T10:53:04.377 回答