Saya tidak berpikir Anda dapat mencapai ini dengan memetakan ManyToOne
asosiasi ke User
secara umum di UserActivity
kesatuan. Itu mungkin terlalu membingungkan bagi penyedia JPA (Hibernate).
Sebagai gantinya, saya pikir Anda perlu memetakan asosiasi ke User
di masing-masing dari Question
, Answer
dan Comment
entitas. Ya, saya tahu itu akan menjadi kode duplikat, tetapi sepertinya satu-satunya cara Anda kemudian dapat memenuhi syarat OneToMany
pemetaan di User
menggunakan mappedBy
referensi.
Misalnya, Question
. Anda entitas akan memiliki asosiasi yang didefinisikan sebagai:
@ManyToOne(cascade = { MERGE, PERSIST }, fetch = LAZY)
@JoinColumn(name = "ua_user_id")
private User questionUser;
Bergantung pada seberapa pintar (atau tidak) Hibernate tentang asosiasi di atas, Anda mungkin perlu menentukan table="USER_ACTIVITY"
di JoinColumn
anotasi.
Kemudian User
akan memiliki OneToMany sebagai:
@OneToMany(mappedBy="questionUser", cascade = REMOVE)
private List<Question> questions = new ArrayList<>();
Demikian pula untuk setiap Answer
dan Comment
.
Tentu saja, saya belum mencobanya, jadi saya bisa saja salah.