如何使用 java play framework 和 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
//表1:
@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;
}
//表2
@Entity
@Table(name="tbl_lookup_user_major")
public class LookupUserMajor extends Model {
public LookupUserMajor(){
}
private int majorId;
private int userId;
}
最佳答案
不知道我说的是否准确,但是在教程博客“YABE”中,这种连接表是由 Play 自动创建的:
http://www.playframework.org/documentation/1.2.4/guide6#tagging
模型中描述了多对多关系(博客示例中的“帖子”和“标签”之间):
@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;
...
}
帖子数据的 YAML 是:
Post(jeffPost):
title: The MVC application
postedAt: 2009-06-06
author: jeff
tags:
- play
- architecture
- mvc
运行该应用程序后,我检查了数据库,自动创建了表“post_tag”,并完成了两个表之间的所有链接(填充了 post_ids 和 tags_ids)。
检索数据似乎很简单:
"select distinct p from Post p join p.tags as t"
有人可以证实吗?因为是 Java 和 JPA 以及 Play 的新手 ^^
如果这是正确的,它看起来比“手动”管理连接表更容易。
关于java - 使用 Play Framework 和 JPA 连接两个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7873163/