休止状態の注釈マッピング構成に関して問題があります。ソーシャル メディア プラットフォームに次の 2 つのクラスがあるとします。
@Entity
class User {
@Id
@GeneratedValue
private Long id;
private String name;
@OneToMany
private List<Post> posts; //lazy-loaded, because of big amounts
}
@Entity
class Post {
@Id
@GeneratedValue
private Long id;
//large amounts of data
private String text;
private Date date;
@ManyToOne
private User author;
}
私のユースケースで最も興味深い情報は、すべてのユーザーが書いた最新の投稿です。ユーザーを読み込んで、次のようにカスタム クエリを追加できます。
SELECT mx.userId,text,mx.date FROM
(SELECT user.id AS userId,max(date) AS date
FROM post,user
WHERE post.author=user.id
GROUP BY user.id) mx,
Post p
WHERE p.author=mx.userId
AND p.date=mx.date;
私の質問は、最新の投稿をマップされたユーザーにフィールドとして埋め込む方法です。
新しいユーザー:
@Entity
class User {
@Id
@GeneratedValue
private Long id;
private String name;
@OneToMany
private List<Post> posts;
//@Filter?
//@Query?
private Post latestPost;
}
「latest-post」集計のデータを Java のユーザー オブジェクトと結合したくありません。これは味がしません。したがって、この集約されたフィールドをベースエンティティに埋め込むソリューションを探しています。このような集約されたフィールドを追加するために、Hibernate でユーザー オブジェクトのカスタム取得をどこで指定できますか?
たとえば、CRM に埋め込まれた特定の顧客の取引金額の合計など、同様の問題を想像することができます。
私の考えと問題を説明できれば幸いです。前もって感謝します!