java如何使用jpa和hibernate SpringBoot访问查询中的子元素
我想知道如何在Spring boot中使用一些子对象的名称作为参数来查询它们
比如说,我有一个班级家长,与孩子有一对多的关系
子级有一个名为name的参数。因此,我希望使用like "%name%"
进行查询,以便查询将返回一个包含查询找到的所有子级的列表
我想这样做:
@Query("select c from Parent c where lower(c.name) LIKE lower(CONCAT('%', :name, '%')) ")
List<Parent> findByNameLIKE(@Param("name") String name);
但是使用一位家长拥有的孩子,我会使用家长的id来搜索它。我不知道我是否解释得很好,问题是我无法实现类之间的连接
谢谢
编辑。以下是我的课程:
Compania
@Entity(name = "Compania")
@Table(
name = "compania"
)
public class Compania {
@Id
@SequenceGenerator(
name = "compania_sequence",
sequenceName = "compania_sequence",
allocationSize = 1
)
@GeneratedValue(
strategy = GenerationType.AUTO,
generator = "compania_sequence"
)
@Column(
nullable = false
)
private Long id;
@Column(
name = "name",
nullable = false,
unique = true
)
private String name;
@Column(
name = "bajas"
)
private String bajas;
@OneToMany(
cascade = CascadeType.ALL,
fetch = FetchType.LAZY,
orphanRemoval = true
)
private List<DefaultGroup> default_group;
还有我的孩子班,默认组
@Entity
@Table
public class DefaultGroup {
@Id
@SequenceGenerator(
name = "defaultGroup_sequence",
sequenceName = "defaultGroup_sequence",
allocationSize = 1
)
@GeneratedValue(
strategy = GenerationType.SEQUENCE,
generator = "defaultGroup_sequence"
)
@Column(
nullable = false
)
@JsonIgnore
private Long id;
@Column(
name = "idRef",
nullable = false
)
private int idRef;
@Column(
name = "name",
nullable = false
)
private String name;
@Column(
name = "path"
)
private String path;
@ManyToOne()
private Compania compania;
因此,我希望将defaultGroup分配给id为1的Companyia,其中defaultGroup的名称类似于%x%。我不知道如何实现这一点。谢谢
# 1 楼答案
如果在父实体
Parent
中有一个Child
实体,如下所示:然后可以使用如下查询:
spring数据将为您生成查询
如果我们想通过id和其他约束条件获得父母的孩子,我们可以这样做:
或者,如果您想在
ParentRepository
中使用jpa查询:可以用实体替换
childs
字段和实体