如何设置表之间的关系Ebean/Play框架
How to set relationship between tables Ebean/Play framework
我是 Ebean 世界的新手,在设置实体之间的一些关系时遇到了一些困难。
我基本上有两个类、User
和Car
。
一个用户可以拥有 几辆 辆车(所以我猜 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
我是 Ebean 世界的新手,在设置实体之间的一些关系时遇到了一些困难。
我基本上有两个类、User
和Car
。
一个用户可以拥有 几辆 辆车(所以我猜 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