java - 使用 Play Framework 和 JPA 连接两个表

标签 java sql jpa join playframework

如何使用 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/

相关文章:

sql - PostgreSQL - 在结果中获取数组字段的匹配值

使用 JPA 标准 API 进行日期比较

java - 如何映射包含ArrayList的HashMap

java - 定义新变量

Java:为什么叫按位异或?

sql - 左外连接不保留左表

sql - 为什么人们如此讨厌 SQL 游标?

java - log4j:在生产/开发中对标准输出文件/控制台的不同使用

java - 如何在 Java 1.4 中添加 xml 元素

jpa - 使用 JPA CriteriaBuilder 进行 Union All 和 Sum