假设我有一个Let应用程序,用户可以跟踪其他用户。
在我的数据库中,我有一个User表和一个Following表。
Following表只有两个值: followingUserId和followedUserId。
在Java中,我有一个用户类。我看到的大多数教程都涉及一个对象,该对象包含与其相关的一组对象。如此多的教程可以描述如何让用户有一组用户跟踪该用户,以及一组用户跟随该用户。但这需要大量的记忆。
我在考虑另一种结构,在这种结构中,用户对象没有关于下面的信息。相反,下面的对象如下所示
@Entity
@Table(name = "Following")
public class Following {
RegisteredUser follower;
RegisteredUser followed;
}并对应于联接表。当我想要获得一个用户的所有追随者时,我可以使用该用户作为跟随者对以下所有对象进行查询。
我的问题是:
如果是相关的,我将使用MySQL作为数据库
发布于 2018-05-04 03:29:48
如果使用JPA > 2.0,则可以将关系标记为ID:
@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获得特定用户的追随者集合:
"Select f.follower from Following f where f.followed = :user"https://stackoverflow.com/questions/50166529
复制相似问题