Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.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
Java 如何从与Hibernate Jpa建立了多个关系的关联表中获得结果_Java_Hibernate_Jpa - Fatal编程技术网

Java 如何从与Hibernate Jpa建立了多个关系的关联表中获得结果

Java 如何从与Hibernate Jpa建立了多个关系的关联表中获得结果,java,hibernate,jpa,Java,Hibernate,Jpa,我对hibernate非常陌生,很抱歉出现了任何基本错误,因此我有两个实体用户和机构,我使用hibernate将这些实体映射为具有多个关系的实体,如下所示: User.java实体: @Entity @Table public class User extend AbstractEntity { @Column(name = "name", length = 255, nullable = false, unique = true) private String

我对hibernate非常陌生,很抱歉出现了任何基本错误,因此我有两个实体用户和机构,我使用hibernate将这些实体映射为具有多个关系的实体,如下所示:

User.java实体:

   @Entity
   @Table
   public class User extend AbstractEntity {

   @Column(name = "name", length = 255, nullable = false, unique = true)
   private String name;

   @Column(name = "email", length = 120)
   private String email;

   @Column(name = "phone")
   private String phone;

   @ManyToMany
   @JoinTable(name= "User_Establishment",
   joinColumns = {@JoinColumn(name="user_id") },
   inverseJoinColumns = {@JoinColumn(name="establishment_id") })
   private List<Establishment> establishments;


   public List<Establishment> getEstablishments() {
         return establishments;
   }

   public void setEstablishment(List<Establishment> establishments) {
         this.establishments= establishments;
   }
   }
   @Entity
   @Table
   public class Establishment extend AbstractEntity{

     @Column(name="nif", nullable=false, length=10)
     private String nif;

     @Column(name="code", nullable=false, length=11)
     private String code;

     @Column(name="name", nullable=false)
     private String name;

     @Column(name="address")
     private String address;

     @ManyToMany(mappedBy = "establishments")
     private List<User> users;

     public List<User> getUser() {
           return users;
     }

     public void setUser(List<User> users) {
           this.users= users;
     }

   }
到目前为止还不错,我可以使用seter和geter在表中正确地添加值。 但是现在我想使用hibernate的查询来获取这些值,但是我真的不知道怎么做,因为当我试图创建一个查询来访问存储库中的数据时,我做不到,因为我没有用于关联表的存储库

所以给用户id作为参数,我想要每个机构id,以便从机构表中获取所有信息,给机构id

有没有办法做到这一点


谢谢。

存储库通常只是一个放置持久性相关逻辑的地方,不需要创建一个,除非您暗示了其他东西

每次查询用户或机构时,您都可以导航相应的关联并获取所需的数据,如下所示:

User user = entityManager.find(User.class, "SOMENAME");
user.getEstablishments(); // should give the related values`    

存储库通常只是一个放置持久性相关逻辑的地方,不需要创建一个,除非您暗示了其他东西

每次查询用户或机构时,您都可以导航相应的关联并获取所需的数据,如下所示:

User user = entityManager.find(User.class, "SOMENAME");
user.getEstablishments(); // should give the related values`    

如果目标是获得一个用户的所有机构,那么使用SpringDataJPA非常简单

User user = userDao.findById(userId);
List<Establishment> establishments = user.getEstablishments();
User-User=userDao.findById(userId);
列表机构=user.getEstablisions();

上面的代码应该足够了。

如果目标是获得用户的所有机构,那么使用Spring数据JPA非常简单

User user = userDao.findById(userId);
List<Establishment> establishments = user.getEstablishments();
User-User=userDao.findById(userId);
列表机构=user.getEstablisions();

上面的代码应该足够了。

不确定您想要查询什么,您能详细说明一下吗?好的,对不起,我会详细说明,所以给用户id作为参数,我想要每个机构id,为了从机构表中获取所有信息,给出机构id,您应该按用户id选择用户,然后,您将通过getEstablisations getter将所有机构作为一个集合,如下面的@LunaticJape所建议的。不确定您要查询的是什么,您可以详细说明一下吗?好的,对不起,我将详细说明,因此将用户\u id作为参数,我想要每个机构\u id,为了从建立表中获取所有内容,您应该通过userId选择用户,然后您将通过getEstations getter将所有建立作为一个集合,如下面@lunatiJape所建议的。我明白了。。。但是“SOMENAME”可以是关联表中的一个值?@coderTester否,为此您需要一个条件(jpa2中的ou条件)或JQL查询,请参见。。。但是“SOMENAME”可以是关联表中的值?@coderTester否,因此您需要一个条件(jpa2中的ou条件)或一个JQL查询