lat*_*atj 8 java jpa playframework ebean playframework-2.2
可以说我有这些表:
ORDER: id ITEM: id ORDER_ITEM: order_id, item_id
表:ORDER_ITEM
是ORDER
和之间的桥表ITEM
.
我如何描述这三人组Ebean
?
我宁愿不使用原始SQL,以便我仍然可以创建和更新这些实体.
更新于 11月9日星期六02:32:40 UTC 2013
好吧,让我们更难以解决这个问题,更能代表我的实际情况.列名称不符合约定:
ORDER: order_number ITEM: item_number ORDER_ITEM: my_order, my_item
cos*_*lev 15
您不必自己创建特殊的桥接表,除非您希望除外键之外还有其他字段.
在Order类中,您应该定义字段:
@ManyToMany
public List<Item> items;
Run Code Online (Sandbox Code Playgroud)
在Item类中:
@ManyToMany(mappedBy = "items")
public List<Order> orders;
Run Code Online (Sandbox Code Playgroud)
Ebean将为您生成桥牌表.
此外:
您可以在两个类之间使用非对称关系类型:
@ManyToMany
@JoinTable(name="Order_Item")
public List<Item> items;
Run Code Online (Sandbox Code Playgroud)
和
@ManyToOne
public Order order;
Run Code Online (Sandbox Code Playgroud)
如果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;
}
Run Code Online (Sandbox Code Playgroud)
和
@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; }
Run Code Online (Sandbox Code Playgroud)
代码在这里:https://github.com/cosmolev/BridgeTable/tree/master/app/models
归档时间: |
|
查看次数: |
6153 次 |
最近记录: |