請檢查以下情況:
class ParentClass {
List<ChildClass> children;
}
class ChildClass {}
class SortingClass {}
基本上,ParentClass與ChildClass具有@OneToMany關系,而ChildClass可以與SortingClass連接( @ManyToMany),以便在回傳給呼叫者后對ParentClass內的ChildClass物件進行排序。
最后,ParentClass應該具有按特定SortingClass屬性排序的ChildClass項,該屬性不應包含在回傳給呼叫者的 ResultSet 中。
即ChildClass是一個 DATE 項(開始、結束、行程等),而SortingClass宣告當在最終前端視圖中定位這兩項時,START DATE 項應位于 END DATE 項之前。
我如何使用 Spring/Repository JPA 注釋來實作這一點?我是否應該將此排序移動到前端應用程式,將資訊(父/子和排序)分開?
謝謝你。
問候,上午
uj5u.com熱心網友回復:
您可以使用 @OrderBy 來實作:
class ParentClass {
@OrderBy("fieldName ASC")
List<ChildClass> children;
}
uj5u.com熱心網友回復:
假設類以這種方式組成:
class ParentClass {
private long id;
private List<ChildClass> children;
}
class ChildClass {
private SortingClass fieldName
}
class SortingClass {
private LocalDate start;
}
可以使用以下方法創建 Spring Data Repository:
@Repository
class ParentRepository extends JpaRepository<ParentClass, Long> {
Optional<ParentClass> findByIdOrderByChildrenFieldNameStartAsc(long id);
List<ParentClass> findAllOrderByChildrenFieldNameStartAsc();
}
uj5u.com熱心網友回復:
我試圖執行以下操作:
class ParentClass {
private List<ChildClass> children;
}
class ChildClass {
@Id
private String anotherId;
@Id
private String sortKey;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumnsOrFormulas(value = {
@JoinColumnOrFormula(formula = @JoinFormula(value = "GROUP", referencedColumnName = "sortingGroup")),
@JoinColumnOrFormula(column = @JoinColumn(name = "sortKey", referencedColumnName = "sortingKey", insertable = false, updatable = false))
})
private SortingClass sort;
}
class SortingClass {
@Id
private String sortingGroup;
@Id
private String sortingKey;
@OneToMany(mappedBy = "sort", cascade = CascadeType.ALL)
private List<ChildClass> children;
}
為了按 SortingClass 的sortingKey 屬性進行排序,我首先需要連接這兩個表。問題是SortingClass有一個復合鍵,它的屬性之一應該是常量。
但是,使用@JoinColumnsOrFormulas會給我以下錯誤:
引起:java.lang.ClassCastException: org.hibernate.mapping.Formula 不能轉換為 org.hibernate.mapping.Column
我正在努力尋找加入這兩個物體的正確方法,只是通過SortingClass單個屬性對ChildClass進行排序......
uj5u.com熱心網友回復:
以下是我目前正在研究的真實資料庫的簡要方案。
- 命令
每個 ORDER 專案都由一個唯一的 ID 標識。
- 訂購日期
每個 ORDER_DATE 都連接到一個特定的 ORDER ID,并且同一個 ORDER 可以有多個 ORDER_DATE 項(即開始日期、結束日期等)。
- 鍵
包含多個鍵值對的公用表。在這種情況下,每個 ORDER_DATE 都有一個 TYPE 鍵,它是與 KEYS 的主要 JOIN。KEYS 給出了日期出現的順序(即開始日期應該在結束日期之前)。KEYS 項由復合鍵(GROUP,TYPE)標識,但對于日期,GROUP 是固定的(即“DATE”)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/473250.html
上一篇:更新陳述句是沒有查詢?
下一篇:映射自關聯雙向物體問題
