您不必自己创建特殊的桥接表,除非您想在其中拥有除外键之外的其他字段。
在 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;
如果order是Item中的可选字段,并且您不希望 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