如何设置表之间的关系Ebean/Play框架

How to set relationship between tables Ebean/Play framework

我是 Ebean 世界的新手,在设置实体之间的一些关系时遇到了一些困难。

我基本上有两个类、UserCar

一个用户可以拥有 几辆 辆车(所以我猜 OneToMany)并且一辆车可以属于 一个 用户(所以我猜 OneToOne).

我如何link这两个实体?这是我到目前为止所做的

用户

@Entity
public class User extends Model{
    @Id
    @GeneratedValue
    public int id;  
    public String name; 
    @ManyToMany(cascade=CascadeType.ALL)
    public List<Car> car = new ArrayList<Car>();
}

汽车

@Entity
public class Car extends Model{
    @Id
    @GeneratedValue
    public int id;
    @OneToOne(cascade = CascadeType.ALL)
    public User user; 
}

我收到以下错误

PersistenceException: Error on models.User.car Can not find mappedBy property [users] in [models.Car]

有人可以清楚地向我解释如何以正确的方式使用注释(非常糟糕的文档),并告诉我为什么会出现此错误吗?

你猜错了:)

您的 User 应该与汽车有 @OneToMany 关系,所以:

@OneToMany(mappedBy = "user", cascade=CascadeType.ALL)
public List<Car> car = new ArrayList<Car>();

而您的 Car 应该有 @ManyToOne 关系:

@ManyToOne(cascade = CascadeType.ALL)
public User user; 

注意@OneToMany注释中的mappedBy 属性:你需要告诉Ebean外键在相关class.[=18中的位置=]

用户

@Entity
public class User extends Model{
@Id
@GeneratedValue
public int id;  
public String name; 
@OneToMany(cascade=CascadeType.ALL)
public List<Car> car = new ArrayList<Car>();
}

汽车

@Entity
public class Car extends Model{

@Id
@GeneratedValue
public int id;
@ManyToOne(mappedBy="car")          //will give you an error
public User user; 
}

mappedBy这里表示关系的所有者,在双向关系中很重要。

认为在正常情况下,汽车可以在没有拥有它的用户的情况下存在,这意味着用户是 relation.So 中的所有者,在您的情况下,用户是关系的所有者。Mapped By

但是上面的代码是行不通的The attribute mappedBy is undefined for the annotation type ManyToOne

在那种情况下 @JoinColumn 出现了。Join Column