gpt4 book ai didi

java - 在 Hibernate 中使用接口(interface)而不是具体类映射 HashMap

转载 作者:行者123 更新时间:2023-11-30 07:59:24 25 4
gpt4 key购买 nike

我有一个名为 Person 的接口(interface),如下所示

public interface Person {
String getName();}

我有一个抽象类 AbstractPerson ,它实现了 Person 。 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中创建ManyToOne关系的代码如下

public class CommentImpl implements Comment, Serializable{
@ManyToOne
private Member commentOwner;
....

我的问题是我想针对接口(interface)而不是具体类编写代码。因此,HashMap 中的值类型将是 Member 类中的 Comment,而 commentOwner 将是 CommentImpl 类中的 Person 类型。当我这样做时,我得到了一个未知的映射异常。如何设置接口(interface)和具体类的关系?

最佳答案

一对多端变为:

@OneToMany(mappedBy="commentOwner", targetEntity = "CommentImpl.class")
@MapKey(name="id" )
private Map<Long, Comment> commentList;

并且多对一端应该是:

@ManyToOne(targetEntity = "Member.class")
private Person commentOwner;

关于java - 在 Hibernate 中使用接口(interface)而不是具体类映射 HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32165752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com