我想知道如何在 Spring boot 中使用它們的名稱作為引數來查詢一些子物件。
假設我有一個與孩子一對多關系的班級家長。
孩子有一個名為 name 的引數。所以我想查詢 usinglike "%name%"以便查詢將回傳一個包含查詢找到的所有孩子的串列。
我想做這樣的事情:
@Query("select c from Parent c where lower(c.name) LIKE lower(CONCAT('%', :name, '%')) ")
List<Parent> findByNameLIKE(@Param("name") String name);
但是使用一位父母擁有的孩子,我會使用父母的 id 進行搜索。我不知道我是否解釋得很好,問題是我無法實作類之間的連接。
謝謝!
編輯。這些是我擁有的課程:
公司
@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;
還有我的孩子班,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;
因此,我想將 defaultGroups 分配給 id 為 1 的 Compania,其中 defaultGroup 的名稱類似于 %x%。我不知道如何實作這一目標。謝謝!
uj5u.com熱心網友回復:
如果您Child在父物體中有Parent這樣的物體:
@Entity
class Parent {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
...
@OneToMany(mappedBy = "parent")
private List<Child> childs;
....
然后你可以使用這樣的查詢:
@Repository
public interface ParentRepository extends JpaRepository<Parent, Long> {
List<Parent> getAllByChildsNameLike(String childName);
}
而 spring 資料將為您生成查詢。
如果我們想通過 id 和其他約束獲取父母的孩子,我們可以這樣做:
@Repository
public interface ChildRepository extends JpaRepository<Child, Long> {
List<Child> getAllByParentIdAndNameLike(Long parentId, String name);
}
或者,如果您想在您的ParentRepository:
@Query("select c from Child c where c.parent.id = ?1 and c.name like ?2")
List<Child> getChilds(Long parentId, String name);
您可以childs用您的物體替換欄位和物體。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/358235.html
