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

Mor*_*nor 2 java playframework ebean playframework-2.2 playframework-2.3

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

我基本上有两个班,User而且Car.

一个用户可以有辆车(我猜OneToMany),一辆车可以属于一个用户(所以我猜OneToOne).

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

用户

@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>();
}
Run Code Online (Sandbox Code Playgroud)

汽车

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

我收到以下错误

PersistenceException:models.User.car上的错误在[models.Car]中找不到mappedBy属性[users]

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

dav*_*ide 6

你猜错了:)

User应该@OneToMany和汽车有关系,所以:

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

虽然你Car应该有一个@ManyToOne关系:

@ManyToOne(cascade = CascadeType.ALL)
public User user; 
Run Code Online (Sandbox Code Playgroud)

注意注释中的mappedBy属性@OneToMany:您需要告诉Ebean外键位于相关类中的哪个位置.