首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JPA:如何表示JoinTable和JoinTable的组合键?

JPA:如何表示JoinTable和JoinTable的组合键?
EN

Stack Overflow用户
提问于 2018-05-04 03:04:47
回答 1查看 196关注 0票数 0

假设我有一个Let应用程序,用户可以跟踪其他用户。

在我的数据库中,我有一个User表和一个Following表。

Following表只有两个值: followingUserId和followedUserId。

在Java中,我有一个用户类。我看到的大多数教程都涉及一个对象,该对象包含与其相关的一组对象。如此多的教程可以描述如何让用户有一组用户跟踪该用户,以及一组用户跟随该用户。但这需要大量的记忆。

我在考虑另一种结构,在这种结构中,用户对象没有关于下面的信息。相反,下面的对象如下所示

代码语言:javascript
复制
@Entity
@Table(name = "Following")
public class Following {
    RegisteredUser follower;
    RegisteredUser followed;
}

并对应于联接表。当我想要获得一个用户的所有追随者时,我可以使用该用户作为跟随者对以下所有对象进行查询。

我的问题是:

  1. “追随者表”有两个用户的一个组合键。如何使用注释来表示复合键?@Id注释表示作为键的单个变量
  2. 我怎样才能进行这样的查询?

如果是相关的,我将使用MySQL作为数据库

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-04 03:29:48

如果使用JPA > 2.0,则可以将关系标记为ID:

代码语言:javascript
复制
@Entity
@Table(name = "Following")
@IdClass(FollowingId.class)
public class Following {
    @Id
    RegisteredUser follower;
    @Id
    RegisteredUser followed;
}

public class FollowingId implements Serializable {
    private int follower;
    private int followed;
}

followingId类中的类型必须与RegisteredUser Id的类型匹配。如果您在JPA派生ID上搜索,有许多更复杂的示例。

对于查询,这取决于您要查找的内容。可以使用JPQL获得特定用户的追随者集合:

代码语言:javascript
复制
"Select f.follower from Following f where f.followed = :user"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50166529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档