通过spring boot h2中的一个元素在arraylist中查询
我的Spring Boot应用程序中有一个通过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<>(); } 我可以查询选择教室其中教室的数组列表获得传递参数 但是我想查询选择教室,其中我只传递了一个用户作为参数,并返回教室的数组列表(到目前为止未完成任何注释部分) 如果在这个界面中有可能,我
教室
类。下面是它的外观:
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,它不应该是教室
中的属性名称,因此在我的示例中是管理员
。我可以收到你的邮件或一些联系人吗,实际上我需要在和上与你讨论。我可以收到你的邮件或一些联系人吗,实际上我需要在和上与你讨论。