1
我試圖實現JPA這樣的查詢:JPA如何聚合列的連接
SELECT
ta.field_aggr_1,
ta.field_aggr_2,
MIN(tb.date_inv) AS min_date_inv,
MAX(tb.date_inv) AS max_date_inv
FROM table_a ta
INNER JOIN table_b tb ON ta.idB = tb.id
GROUP BY
ta.field_aggr_1,
ta.field_aggr_2
關鍵的一點是,在連接表的一列應用MIN
和MAX
功能。
我創建了實體:
@Entity
@Table(name="table_a")
public class EntityA extends Serializable {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@Column(name="field_aggr_1")
private String field_aggr_1;
@Column(name="field_aggr_2")
private String field_aggr_2;
@ManyToOne
@JoinColumn(name="idB")
private EntityB entityB;
// Getters & Setters & HashCode & equals & toString
}
@Entity
@Table(name="table_b")
public class EntityB extends Serializable {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@Column(name="date_inv")
private String date_inv;
// Getters & Setters & HashCode & equals & toString
}
而且在我要創建查詢服務:
我已經設法從包括連接表的字段,
fields.add(join.<EntityB>get("date_inv"));
但是我沒有成功實現min聚合。
在此先感謝您的答案!
「cb.min(...)」是什麼問題,其中cb是CriteriaBuilder?您將在網絡上找到JPA標準示例 –
爲什麼不使用JPQL? –
嗨@NeilStockton,謝謝你的評論。我試圖使用cd.min(...),但我需要一個表達式,我不知道如何從聯接中提取表達式,其中我需要的是數據。 – jherranzm