【发布时间】:2012-07-13 12:23:46
【问题描述】:
我最近开始使用 Hibernate,并试图了解所有注释并确保我做事正确。我有两个类似于下面的表'user'和'user_friends'
+------+------+-------+
| id | name | email |
+------+------+-------+
和用户好友表
+--------+---------+----------+
| 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 中设置了两个类,其方式与此类似
@Entity
@Table(name="users")
public class User {
@Id
@GeneratedValue
private int id;
private int name;
private int email;
@OneToMany(fetch=UserBuddy.class, mappedBy="user", fetch=FetchType.LAZY)
@JoinColumn(name="userid")
private Set<UserBuddy> _buddies;
}
@Entity
@Table(name="user_friends")
public class UserBuddy {
@ManyToOne
@JoinColumn(name="id")
private User friendId;
private int id;
private int name;
private int email;
}
我不知道我会怎么做,从 user 表中获取 user_friends 的姓名和电子邮件。任何人都可以提供任何帮助吗?
【问题讨论】:
-
您在 User 类中没有姓名/电子邮件?
-
是的,并且更新了示例来说明这一点。我可以重新使用 User.class 吗?我不想要存储在那里的所有信息。用户表确实有比这更多的信息,但在这种情况下,我只需要 user_buddy 的姓名和电子邮件。
-
例如,User 表还包含有关注册日期及其虚拟货币的信息。但我不需要他们的 user_friend 的信息,所以我不认为要重用 User.class