本文主要是介绍Play!框架下JPA @OneToMany @ManyToOne注解实例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Use Case :后台用户(User),杂志(Magazine)。
一个后台用户可以创建很多杂志(@OneToMany)。
一本杂志被一个后台用户创建(@ManyToOne)。
其实个人感觉还是Rails里的belongs_to 比ManyToOne 更加符合语义。
首先建立杂志类:
/*** 杂志类*/
@Entity
public class Magazine extends Model
{// 主题@Requiredpublic String topic;// 刊号@Requiredpublic int serial;// 简介@Requiredpublic String summary;// 发布日期@Requiredpublic String date;// 被一个后台用户创建@ManyToOnepublic User creator;}
其次是后台用户类:
@Entity
public class User extends Model
{// 用户名public String username;// 密码public String password;// 是否是管理员public int isAdmin;// 主数据库的idpublic long common_user_id;// 添加过很多杂志@OneToMany(mappedBy = "creator")public List<Magazine> magazines;
}
可以看到,
@OneToMany(mappedBy = "creator")public List<Magazine> magazines;
说明
1. 两个类之间是通过creator来关联,所以数据库不会生成一个中间表。
2. 因为Magazine类对于@ManyToOne没有额外修饰, 所以数据库中magazine表会根据约定自动产生一个creator_id(也就是属性"creator"+_id)并生成外键指向user表的id,通过magazine表的creator_id和user表的id的join来获取相关的数据。
如果改成这样
@ManyToOne
@JoinColumn(name = "main_creator_id", referencedColumnName = "common_user_id")
public User creator;
那么则magazine表会产生一个main_creator_id(而不是creator_id),并生成外键指向user表的common_user_id。
来自:http://thierry-xing.iteye.com/blog/1443317
这篇关于Play!框架下JPA @OneToMany @ManyToOne注解实例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!