【发布时间】:2020-02-24 08:31:47
【问题描述】:
我有这样的表: 表 1:用户
+------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+----------------+
| id | int | NO | PRI | NULL | auto_increment |
| name | varchar(45) | NO | | NULL | |
| lastname | varchar(45) | NO | | NULL | |
| birth_date | date | NO | | NULL | |
| is_deleted | tinyint | NO | | 0 | |
+------------+-------------+------+-----+---------+----------------+
实体1:
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", unique = true, updatable = false, nullable = false)
private int id;
@Column(name = "name", nullable = false)
private String name;
@Column(name = "lastname", nullable = false)
private String lastName;
@Column(name = "birth_date")
private Date birthDate;
@Column(name = "is_deleted")
private boolean isDeleted;
表 2:友谊
+----------------+-----------+------+-----+-------------------+-------------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+-----------+------+-----+-------------------+-------------------+
| first_user_id | int | NO | | NULL | |
| second_user_id | int | NO | | NULL | |
| timestamp | timestamp | NO | | CURRENT_TIMESTAMP | DEFAULT_GENERATED |
+----------------+-----------+------+-----+-------------------+-------------------+
实体2:
@Entity
@Table(name = "friendships")
public class Friendship {
@Id
@Column(name = "first_user_id")
private int firstUserId;
@Id
@Column(name = "second_user_id")
private int secondUserId;
我必须让所有用户的朋友都使用 Hibernate,而不需要本地 SQL 查询。用户 ID 可能出现在第二张表的两列中。通过 JDBC 和 SQL,我使用了这个查询:
SELECT u.id, u.name, u.lastname FROM users u
INNER JOIN friendships f
ON u.id = f.first_user_id OR u.id = f.second_user_id
WHERE f.second_user_id = :userId AND u.id = f.first_user_id
UNION
SELECT u.id, u.name, u.lastname FROM users u
INNER JOIN friendships f
ON u.id = f.first_user_id OR u.id = f.second_user_id
WHERE f.first_user_id = :userId AND u.id = f.second_user_id;
Hibernate 可以做到这一点吗?
【问题讨论】:
标签: java hibernate hibernate-mapping