Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql JPA:如何表示JoinTable和JoinTable的复合键?_Mysql_Jpa_Many To Many_Jointable - Fatal编程技术网

Mysql JPA:如何表示JoinTable和JoinTable的复合键?

Mysql JPA:如何表示JoinTable和JoinTable的复合键?,mysql,jpa,many-to-many,jointable,Mysql,Jpa,Many To Many,Jointable,假设我有一个webapp,用户可以跟随其他用户 在我的数据库中,我有一个用户表和一个后面的表 下面的表只有两个值:followUserId和followDuserId 在Java中,我有一个用户类。我看到的大多数教程都涉及一个对象,其中包含一组与其相关的对象。很多教程都可以描述如何让用户有一组用户跟随该用户,一组用户跟随一个用户。但这需要大量的内存 我正在考虑另一种结构,其中用户对象没有关于以下内容的信息。相反,有一个如下对象 @Entity @Table(name = "Following")

假设我有一个webapp,用户可以跟随其他用户

在我的数据库中,我有一个
用户
表和一个
后面的

下面的
表只有两个值: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为什么我会得到它,我做了什么来修复它。但是现在接受这个答案。非常感谢。