如何描述Ebean的桥接表? [英] How do I describe a bridge table to Ebean?
问题描述
让我说我有这些表:
ORDER: id
ITEM: id
ORDER_ITEM: order_id, item_id
表: ORDER_ITEM
是 ORDER
和 ITEM
。
如何将此三人组描述为 Ebean
?
How do I describe this threesome to Ebean
?
我不想使用原始SQL,因此我仍然可以创建和更新这些实体。
I would prefer not to use raw SQL so that I can still create and update these entities.
更新周六11月9日02:32:40 UTC 2013
UPDATE Sat Nov 9 02:32:40 UTC 2013
好的,让我们解决这个问题更难,更能代表我的实际情况。列名称不符合约定:
Ok, lets make this problem harder and more representative of my actual situation. The column names dont fit the convention:
ORDER: order_number
ITEM: item_number
ORDER_ITEM: my_order, my_item
推荐答案
您不必自己创建特殊的桥接表,除非您想要其他字段除了外键。
You don't have to create special bridge table yourself unless you want to have other fields there except foreign keys.
在Order类中你应该定义字段:
In Order class you should define field:
@ManyToMany
public List<Item> items;
在物品类中:
@ManyToMany(mappedBy = "items")
public List<Order> orders;
Ebean将为您生成桥牌表。
And Ebean will generate bridge table for you.
此外:
您可以在两个类之间使用非对称关系类型:
You can have asymmetric relationship types between two classes:
@ManyToMany
@JoinTable(name="Order_Item")
public List<Item> items;
和
@ManyToOne
public Order order;
如果订单是商品<中的可选字段/ strong>并且您不希望在Item表中包含大量空字段。
in case when order is an optional field in Item and you don't want to have a lot of empty fields in Item table.
更新:
这对你有用。所有表名和列名现在都由注释明确命名:
This will work for you. All the table and column names are now explicitly named by annotations:
@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的桥接表?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!