通过spring boot h2中的一个元素在arraylist中查询

通过spring boot h2中的一个元素在arraylist中查询,spring,spring-boot,jpa,spring-data-jpa,h2,Spring,Spring Boot,Jpa,Spring Data Jpa,H2,我的Spring Boot应用程序中有一个教室类。下面是它的外观: public class ClassRoom { @Id @GeneratedValue Long classRoomID; ArrayList<User>adminList=new ArrayList<>(); } 我可以查询选择教室其中教室的数组列表获得传递参数 但是我想查询选择教室,其中我只传递了一个用户作为参数,并返回教室的数组列表(到目前为止未完成任何注释部分) 如果在这个界面中有可能,我

我的Spring Boot应用程序中有一个
教室
类。下面是它的外观:

public class ClassRoom {

@Id @GeneratedValue Long classRoomID;

ArrayList<User>adminList=new ArrayList<>();
}
我可以查询选择
教室
其中
教室
数组列表
获得传递参数

但是我想查询选择
教室,其中
我只传递了一个
用户
作为参数,并返回
教室
数组列表
(到目前为止未完成任何注释部分)


如果在这个界面中有可能,我怎么做呢?

如果您使用联接表进行多对多关联,这就是您需要的

 @Query(value = "SELECT DISTINCT cr FROM ClassRoom cr JOIN cr.admins a WHERE a = ?1")
 List<ClassRoom> findAllByAdmin(final Admin admin);
@Query(value=“选择不同于课堂cr的cr加入cr.admins a,其中a=?1”)
列出findAllByAdmin(最终管理员);

如果您使用联接表进行多对多关联,这就是您所需要的

 @Query(value = "SELECT DISTINCT cr FROM ClassRoom cr JOIN cr.admins a WHERE a = ?1")
 List<ClassRoom> findAllByAdmin(final Admin admin);
@Query(value=“选择不同于课堂cr的cr加入cr.admins a,其中a=?1”)
列出findAllByAdmin(最终管理员);

当映射集合时,Hibernate要求它声明它,例如
列表
设置
映射
等。但是您使用
ArrayList
来声明管理列表,我猜整个列表将存储到一列中,其中包含一些二进制数据类型的DB。在使用RDBMS时,没有人会以这种有趣的方式存储数据,除非您有充分的理由这样做

从您的描述来看,
教室
用户
似乎是多对多的。为了便于演示,我将其映射为
@ManyToMany

@实体
@桌子
公共课堂{
@许多
@JoinTable(name=“教室\用户”,
joinColumns=@JoinColumn(name=“教室id”),
inverseJoinColumns=@JoinColumn(name=“user\u id”))
私有列表管理员=新建ArrayList();
}
@实体
@桌子
公共类用户{
@许多(mappedBy=“admins”)
private List=Lists.newArrayList();
}
然后给一个用户admin,以获取他的所有管理教室:

@Query(“从教室cr中选择不同的cr左连接获取cr.admins admin,其中admin=?1”)
公共列表findByAdmin(用户管理员);
或:

@Query(“从教室cr中选择不同的cr?1名cr.admins成员”)
公共列表findByAdmin(用户管理员);

当映射集合时,Hibernate要求它声明它,例如
列表
设置
映射
等。但是您使用
ArrayList
来声明管理列表,我猜整个列表将存储到一列中,其中包含一些二进制数据类型的DB。在使用RDBMS时,没有人会以这种有趣的方式存储数据,除非您有充分的理由这样做

从您的描述来看,
教室
用户
似乎是多对多的。为了便于演示,我将其映射为
@ManyToMany

@实体
@桌子
公共课堂{
@许多
@JoinTable(name=“教室\用户”,
joinColumns=@JoinColumn(name=“教室id”),
inverseJoinColumns=@JoinColumn(name=“user\u id”))
私有列表管理员=新建ArrayList();
}
@实体
@桌子
公共类用户{
@许多(mappedBy=“admins”)
private List=Lists.newArrayList();
}
然后给一个用户admin,以获取他的所有管理教室:

@Query(“从教室cr中选择不同的cr左连接获取cr.admins admin,其中admin=?1”)
公共列表findByAdmin(用户管理员);
或:

@Query(“从教室cr中选择不同的cr?1名cr.admins成员”)
公共列表findByAdmin(用户管理员);

用户
类中,它不应该是
@manytomy(mappedBy=“User”)
根据,而不是
管理员
Hi Maifee,它不应该是
教室
中的属性名,因此在我的示例中它是
管理员
。在
用户
类中,它不应该是
@manytomy(mappedBy=“User”)
根据,不是
管理员
Hi Maifee,它不应该是
教室
中的属性名称,因此在我的示例中是
管理员
。我可以收到你的邮件或一些联系人吗,实际上我需要在和上与你讨论。我可以收到你的邮件或一些联系人吗,实际上我需要在和上与你讨论。