一個HashMap我有稱爲人的接口如下使用接口代替混凝土類映射的在休眠
public interface Person {
String getName();}
我有一個抽象類,其中AbstractPerson實現人。 Abstar
@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="PERSON_TYPE")
@Table(name="PERSON")
public class AbstractPerson implements Person{
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
private String firstName;
private String lastName;
.....
@Override
public String getName() {
return firstName + " " + lastName;
}
我的具體類是Member,所以它擴展了AbstractPerson。
@Entity
@DiscriminatorValue(value="MEMBER")
public class Member extends AbstractPerson{
@OneToMany(mappedBy="commentOwner")
@MapKey(name="id")
private Map<Long, CommentImpl> commentList;
....
創建在CommentImpl的多對一關係的代碼如下
public class CommentImpl implements Comment, Serializable{
@ManyToOne
private Member commentOwner;
....
我的問題是我想寫對接口代替混凝土類的代碼。所以HashMap中的值類型將在Member類中爲Comment,而CommentOwner將在CommentImpl類中爲Person類型。 當我這樣做時,我得到一個未知的映射例外。我如何設置與接口和具體類的關係?
您可以更新您的問題,以顯示Member'如何''實現Person'(例如,通過'AbstractPerson'實現'Person')? –
感謝您的快速反饋!我還添加了AbstractPerson代碼 – baris