私は最近Hibernateの使用を開始し、すべての注釈に頭を悩ませて、適切に処理できるようにしようとしています。以下のような2つのテーブル「user」と「user_friends」があります
+------+------+-------+------+
| id | name | email | etc. |
+------+------+-------+------+
とユーザーの友達テーブル
+--------+---------+----------+
| userid | buddyid | accepted |
+--------+---------+----------+
SQLで、次のようなクエリを実行しました。
SELECT u.id AS id, u.name AS username, u.email AS email FROM user_friends
INNER JOIN users AS u ON u.id = '1' WHERE buddyid = '2' AND ACCEPTED = 1 UNION ALL
SELECT u.id as id, u.name AS username, u.email AS email FROM user_friends
INNER JOIN users AS u ON u.id = '2' WHERE buddyid = '1' AND ACCEPTED = 1;
これに似た方法でJavaセットアップに2つのクラスがあります
@Entity
@Table(name="users")
public class User {
@Id
@GeneratedValue
private int id;
private int name;
private int email;
private DateTime registerDate;
private DateTime lastActivity;
private int currency;
private int seasonCurrency;
@OneToMany(fetch=UserBuddy.class, mappedBy="user", fetch=FetchType.LAZY)
@JoinColumn(name="userid")
@Filter(name="messengerBuddyFilter", condition="accepted=1")
private Set<UserBuddy> _buddies;
}
@Entity
@Table(name="user_friends")
public class UserBuddy {
private int id;
private int name;
private int email;
}
私は以前にこの質問をしましたが、それでも私が望むようにこれを機能させることができませんでした。そのバディの名前と電子メールを含み、登録時間などではなく、他には何も含まないUserBuddy.classのセットを返すことができる必要があります(ユーザークラスを使用してマップします)。また、リクエストを受け入れたバディのみを返すようにするのも困難です(ACCEPTED = 1)
誰かが何か提案をすることができますか?