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.