我有4個JPA實體如下:定製@Query春數據倉庫通過多個實體
實體Farm
:
@Entity
public class Farm implements Serializable {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long idFarm;
private String nameFarm;
}
實體SAU
:
@Entity
public class SAU implements Serializable {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long idSau;
private String nameSau;
@OneToOne
@JoinColumn(name="farm_id")
private Farm farm;
}
實體Part
:
@Entity
public class Part implements Serializable {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long idPart;
private String namePart;
@ManyToOne
@JoinColumn(name = "sau_id")
private Sau sau;
}
實體Cult
:
@Entity
public class Cult implements Serializable {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long idCult;
private String nameCult;
@OneToOne
@JoinColumn(name = "part_id")
private Part part;
}
我需要通過使用類似方法的公約命名檢索Cult
的Collection
一個對象在哪裏farm_id = x
,我顯然無法做到這一點:
public Collection<Cult> = findCultByPartBySauByFarmIdFarm(Long idFarm);
我可以不知道如何在Spring Data Repository中爲這種情況編寫定製@Query
。
@Rallph我得到這個錯誤:'引起:java.lang.IllegalArgumentException:org.hibernate.hql.internal.ast.QuerySyntaxException:加入的路徑! [從cult中選擇c c加入部分p加入p.sau s加入s.farm f其中f.idFarm =:x]' – dwix
哦,我解決了這個問題,你需要在'part'之前加一個'c':' ..c加入c.part..',那是失蹤的路徑。謝謝。 – dwix
@dwix:抱歉,我的錯,你修好了,我更新了答案 – Ralph