Omi*_*deh 5 java sql jpa join playframework
如何使用java play框架和jpa连接两个表,我真的很难将我的MySQL查询转换为jpa查询.
这是我在旧Java代码中使用的MySQL查询:
SELECT * FROM tbl_majors
INNER JOIN tbl_lookup_user_major
ON tbl_majors.id=tbl_lookup_user_major.majorId
WHERE tbl_lookup_user_major.userId=12
Run Code Online (Sandbox Code Playgroud)
@Entity
@Table(name="tbl_majors")
public class Major extends Model {
public Major(){
}
@Column(name="major_name")
private String name;
@Column(name="major_desc")
private String description;
}
Run Code Online (Sandbox Code Playgroud)
@Entity
@Table(name="tbl_lookup_user_major")
public class LookupUserMajor extends Model {
public LookupUserMajor(){
}
private int majorId;
private int userId;
}
Run Code Online (Sandbox Code Playgroud)
不知道我是否明白这里的确切要点,但在教程博客“YABE”中,这种连接表是由 Play 自动使用和创建的:
http://www.playframework.org/documentation/1.2.4/guide6#tagging
模型中描述了多对多关系(博客示例中的“Post”和“Tag”之间):
@ManyToMany(cascade=CascadeType.PERSIST)
public Set<Tag> tags;
public Post(User author, String title, String content) {
...
this.tags = new TreeSet<Tag>();
...
this.title = title;
this.content = content;
...
}
Run Code Online (Sandbox Code Playgroud)
帖子数据的 YAML 是:
Post(jeffPost):
title: The MVC application
postedAt: 2009-06-06
author: jeff
tags:
- play
- architecture
- mvc
Run Code Online (Sandbox Code Playgroud)
运行应用程序后,我检查数据库,并自动创建表“post_tag”,并且两个表之间的所有链接均已完成(post_ids 和tags_ids 已填充)。
检索数据似乎很简单:
"select distinct p from Post p join p.tags as t"
Run Code Online (Sandbox Code Playgroud)
有人可以证实吗?因为刚接触 Java 和 JPA,所以玩一下 ^^
如果这是正确的,那么看起来比“手动”管理连接表更容易。