Mysql JPA:如何表示JoinTable和JoinTable的复合键?
假设我有一个webapp,用户可以跟随其他用户 在我的数据库中,我有一个Mysql JPA:如何表示JoinTable和JoinTable的复合键?,mysql,jpa,many-to-many,jointable,Mysql,Jpa,Many To Many,Jointable,假设我有一个webapp,用户可以跟随其他用户 在我的数据库中,我有一个用户表和一个后面的表 下面的表只有两个值:followUserId和followDuserId 在Java中,我有一个用户类。我看到的大多数教程都涉及一个对象,其中包含一组与其相关的对象。很多教程都可以描述如何让用户有一组用户跟随该用户,一组用户跟随一个用户。但这需要大量的内存 我正在考虑另一种结构,其中用户对象没有关于以下内容的信息。相反,有一个如下对象 @Entity @Table(name = "Following")
用户
表和一个后面的
表
下面的表只有两个值:followUserId和followDuserId
在Java中,我有一个用户类。我看到的大多数教程都涉及一个对象,其中包含一组与其相关的对象。很多教程都可以描述如何让用户有一组用户跟随该用户,一组用户跟随一个用户。但这需要大量的内存
我正在考虑另一种结构,其中用户对象没有关于以下内容的信息。相反,有一个如下对象
@Entity
@Table(name = "Following")
public class Following {
RegisteredUser follower;
RegisteredUser followed;
}
和对应于联接表。当我想要获得一个用户的所有追随者时,我可以用该用户作为追随者来查询以下所有对象
我的问题是:
Followers表具有两个userid中的每一个的复合键。如何使用注释来表示该复合键?@Id注释将单个变量表示为键
我怎样才能做这样的查询
如果相关,我使用MySQL作为db如果使用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;
}
以下Id类中的类型必须与RegisteredUser Id的类型匹配。如果搜索JPA派生Id,则会有大量更复杂的示例
对于查询,这取决于您要查找的内容。可以使用JPQL获得特定用户的关注者集合:
"Select f.follower from Following f where f.followed = :user"
我得到一个错误,说“Id”属性类型不应该是“Persistence Entity”
Update:错误神秘地消失了。Idk为什么我会得到它,我做了什么来修复它。但是现在接受这个答案。非常感谢。