Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Hibernate - ManyToOne &Inheritance / JOINED / mappedBy

Tôi không nghĩ rằng bạn có thể đạt được điều này bằng cách ánh xạ ManyToOne liên kết với User nói chung trong UserActivity thực thể. Điều đó có lẽ quá khó hiểu đối với nhà cung cấp JPA (Hibernate).

Thay vào đó, tôi nghĩ bạn cần ánh xạ liên kết tới User trong mỗi của Question , AnswerComment các thực thể. Có, tôi biết đó sẽ là mã trùng lặp, nhưng có vẻ như cách duy nhất để bạn có thể đủ điều kiện tham gia OneToMany ánh xạ trong User sử dụng mappedBy tham khảo.

Ví dụ:Question của bạn thực thể sẽ có một liên kết được định nghĩa là:

@ManyToOne(cascade = { MERGE, PERSIST }, fetch = LAZY)
@JoinColumn(name = "ua_user_id")
private User questionUser;

Tùy thuộc vào mức độ thông minh (hay không) của Hibernate về liên kết trên, bạn có thể cần chỉ định table="USER_ACTIVITY" trong JoinColumn chú thích.

Sau đó, User sẽ có OneToMany là:

@OneToMany(mappedBy="questionUser", cascade = REMOVE)
private List<Question> questions = new ArrayList<>();

Tương tự cho mỗi AnswerComment .

Tất nhiên, tôi chưa thử điều này, vì vậy tôi có thể sai.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Giá trị mặc định của MySQL dựa trên chế độ xem

  2. Giao dịch mysql Node.js

  3. Nối các ngày còn thiếu từ bảng lịch

  4. Cách chọn dữ liệu từ hai bảng bằng một truy vấn duy nhất

  5. mysql - dấu thời gian tìm kiếm theo giờ trong ngày