当前位置: 首页 > 知识库问答 >
问题:

如何在JPA中访问join创建的表

濮彬
2023-03-14

我正在创建一个应用程序,其中有两个实体

>

  • 用户

    package com.example.chat.models;
    
    import javax.persistence.*;
    import java.util.List;
    
    @Entity
    @Table(name="USERS")
    public class User {
        @Id
        @Column(name="userid")
        private String username;
    
        @Column(name="pass")
        private String password;
    
    
        @ManyToMany(mappedBy = "users",fetch=FetchType.EAGER,cascade = CascadeType.ALL)
        List<Chatroom>rooms;
    
        public List<Chatroom> getRooms() {
            return rooms;
        }
    
        public void setRooms(List<Chatroom> rooms) {
            this.rooms = rooms;
        }
    
    
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        public String getUsername() {
            return username;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    }
    

    聊天室类

    package com.example.chat.models;
    
    import javax.persistence.*;
    import java.util.List;
    @Entity
    @Table(name="Chatrooms")
    public class Chatroom {
        @Id
        @Column(name="chatroomId")
        private String id;
        @Column(name="chatRoomName")
        private String name;
        @Column(name="chatroomDesc")
        private String description;
    
        @ManyToMany(fetch=FetchType.EAGER,cascade = CascadeType.ALL)
        @JoinTable(
                name = "users_chatrooms",
                joinColumns = @JoinColumn(name = "chatroomId"),
                inverseJoinColumns = @JoinColumn(name = "userid"))
        private List<User>users;
    
        public List<User> getUsers() {
            return users;
        }
    
        public void setUsers(List<User> users) {
            this.users = users;
        }
    
    
        public String getId() {
            return id;
        }
    
        public void setId(String id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getDescription() {
            return description;
        }
    
        public void setDescription(String description) {
            this.description = description;
        }
    
    }
    
  • 共有1个答案

    饶谦
    2023-03-14

    您可以使用@joincolumn简单地连接这两个实体

    @Entity
    @Table(name="Chatrooms")
    public class Chatroom {
        @Id
        @Column(name="chatroomId")
        private String id;
        @Column(name="chatRoomName")
        private String name;
        @Column(name="chatroomDesc")
        private String description;
    
        @ManyToMany(fetch=FetchType.EAGER,cascade = CascadeType.ALL)
        @JoinColumn(name = "userid", referencedColumnName = "chatroomId")
        private List<User>users;
     
        // getters and setters   
    }
    
     类似资料:
    • 问题内容: 我开始学习JPA,并已基于我在SQL Server中测试的以下本机SQL实现了JPA查询示例: 通过上面的SQL,我构造了以下JPQL查询: 如您所见,我仍然缺少原始查询中的条件。我的问题是,如何将其放入JPQL? 问题答案: 写这个; 因为您的学生实体与ClassTbl实体具有一对多关系。

    • 问题内容: 您可以给MS Access等同于MySQL“如果不存在则创建表…”吗? 更新 像这样 也将是合适的 问题答案: 对于SQL DDL代码,答案是否定的。ACE / Jet SQL没有任何流控制语法,并且ACE / Jet只能执行一个SQL语句。是的,没错:ACE / Jet不支持程序代码:(

    • 我是Spring Data的新手,并试图通过关注这篇关于SO和其他一些教程的帖子来解决这个问题,但没有取得太大成功。 我正在尝试在 2 个表之间使用 Spring Data JPA 进行简单的连接。数据库中的表称为: * user_vehicle - user_vehicle表中数据库中的当前数据: ID|vehicle_ID|user_ID 1|1|1 2|2|1 这是我尝试过但无法让它工作的代

    • 问题内容: 我正在使用Jenkins管道构建一个Android应用程序。 构建成功完成后,它将创建一个.apk文件。 我希望质量检查小组的成员能够下载该文件并在将其上传到Google商店之前测试该应用程序,因此我希望这些用户(有权访问Jenkins服务器)能够通过Jenkins服务器如该SO问题所示,但由于某种原因,我用来尝试下载工件的URL一直给我404错误。 这些是我尝试访问的链接,但无济于事

    • 我在访问另一个命名空间中存在的服务时遇到问题。 我有两个名称空间(在同一个集群中)airflow-dev和dask-dev。 在dask-dev名称空间中,我部署了dask集群(dask调度器和工作器)。此外,还为dask-scheduler pod创建了一个服务(集群IP)。我可以使用“kubectl port-forward”命令从chrome访问dask-scheduler pod。 然而,

    • 我按照 https://mherman.org/blog/dockerizing-a-react-app/ 下的步骤操作 我的设置: < li>Windows 10主页 < li>docker命令在docker快速启动终端https://docs . Docker . com/toolbox/toolbox _ install _ windows/中运行 如何重现:按照第一个链接中的步骤操作: 全