Java Hibernate 注解 @JoinTable 关系

标签 java sql hibernate join

我最近开始使用 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_friends 姓名和电子邮件。有人可以提供任何帮助吗?

最佳答案

由于您的 UserBuddy 中有 User 对象,因此只需引用该对象

@Entity
@Table(name="user_friends")
public class UserBuddy 
{

   @ManyToOne
   @JoinColumn(name="id")
   private User friend; // This is a User not an id

   public String getEmail()
   {
     return friend.getEmail();
   }
}

关于Java Hibernate 注解 @JoinTable 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11474082/

相关文章:

sql - 动态选择要在 SELECT 语句中使用的列

sql - 跨同一连接池的多个请求的临时表是否唯一?

java - 添加 JMenuItems 的有效方法

java - jar 文件可以在 eclipse 文件夹中使用,但不能在其中使用。未找到主类

java - 是否可以在自定义 PreAuthorize 方法中获取 RequestMethod-verb?

sql - JPA with Hibernate - 多对多关系,获取所有数据

sql - Hibernate:构建唯一字符串列表 - 而不是实体

java - 对象属性绑定(bind)库

sql - 糟糕的数据库模式设计的升级策略

java - 在 UPDATE 查询上返回 Hibernate 实体