假设我有一个webapp,用户可以跟踪其他用户。
在我的数据库里,我有一个 User
table,和 Following
table。
这个 Following
表只有两个值:followUserId和followDuserId。
在java中,我有一个user类。我看到的大多数教程都涉及一个对象,其中包含一组与其相关的对象。许多教程可以描述如何让用户有一组用户跟随该用户,一组用户跟随一个用户。但这需要大量的内存。
我正在考虑另一种结构,其中用户对象没有关于以下内容的信息。相反,有一个如下对象
@Entity
@Table(name = "Following")
public class Following {
RegisteredUser follower;
RegisteredUser followed;
}
并对应于联接表。当我想得到一个用户的所有追随者时,我可以用这个用户作为追随者来查询所有的追随者对象。
我的问题是:
followers表具有两个userid中的每一个的复合键。如何使用注解来表示复合键?@id注解将单个变量表示为键
我怎么能做这样的查询?
如果相关的话,我使用mysql作为数据库
1条答案
按热度按时间ybzsozfc1#
如果使用jpa>2.0,可以将关系标记为id:
following id类中的类型必须与registereduser id的类型匹配。如果搜索jpa派生id,则有许多更复杂的示例。
对于查询,这取决于您要查找的内容。可以使用jpql获得特定用户的关注者集合: