アイテム、セラー、コメントの 3 つのエンティティ クラスがあります。どこ、
Item 1 --- * Comment, and Seller 1 --- * Comment
追加テーブルを追加せずに JPA/Hibernate アノテーションでクラスをマップするにはどうすればよいですか?
テーブル構造は次のとおりです。
Item(id, description)
Seller(id, name)
Comment(id, entityType, entityKey, message)
ここで、entityType は ITEM または SELLER であり、entityKey は item.id または Seller.id です。
現在、次のようなものがあります。
更新: OneToMany 側は問題ありませんが、ManyToOne 側で機能させる方法を理解する必要があります。
@Entity
@Table(name = "item_tb")
public class Item {
@Id
@GeneratedValue
private Long id;
@Column(name = "description")
private String description;
*** @OneToMany
*** @JoinColumn(name = "entityKey")
*** @Where(clause = "entityType = 'ITEM'")
private List<Comment> comments;
}
@Entity
@Table(name = "seller_tb")
public class Seller {
@Id
@GeneratedValue
private Long id;
@Column(name = "name")
private String name;
*** @OneToMany
*** @JoinColumn(name = "entityKey")
*** @Where(clause = "entityType = 'SELLER'")
private List<Comment> comments;
}
@Entity
@Table(name = "comment_tb")
public class Comment {
@Id
@GeneratedValue
private Long id;
@Column(name = "entityType")
private String entityType;
@Column(name = "entityKey")
private Integer entityKey;
@Column(name = "message")
private String message;
@ManyToOne
...
private Item item;
@ManyToOne
...
private Seller seller;
}