如何描述Ebean的桥接表? [英] How do I describe a bridge table to Ebean?

查看:143
本文介绍了如何描述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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆