Java Hibernate接口多态映射
我最近在学习Hibernate,基本概念对我来说很清楚,但我现在有一个设计问题。我所有的具体类都实现了接口,下面是代码: 包装组件Java Hibernate接口多态映射,java,hibernate,nhibernate-mapping,Java,Hibernate,Nhibernate Mapping,我最近在学习Hibernate,基本概念对我来说很清楚,但我现在有一个设计问题。我所有的具体类都实现了接口,下面是代码: 包装组件 import javax.persistence.Entity; public interface Person { public void setName(String name); public String getName(); public void setId(Integer id); public Integer get
import javax.persistence.Entity;
public interface Person {
public void setName(String name);
public String getName();
public void setId(Integer id);
public Integer getId();
public void setWeapon(Weapon weapon);
public Weapon getWeapon();
}
import javax.persistence.*;
@Entity
@Table(name = "weapon_inf")
public class WeaponImpl implements Weapon {
@Id@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "weapon_id")
private Integer id;
@Column(name = "weapon_sharpness")
private Integer sharpness;
setters and getters omitted
}
````
````
````
包装组件
import javax.persistence.Entity;
public interface Person {
public void setName(String name);
public String getName();
public void setId(Integer id);
public Integer getId();
public void setWeapon(Weapon weapon);
public Weapon getWeapon();
}
import javax.persistence.*;
@Entity
@Table(name = "weapon_inf")
public class WeaponImpl implements Weapon {
@Id@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "weapon_id")
private Integer id;
@Column(name = "weapon_sharpness")
private Integer sharpness;
setters and getters omitted
}
当我尝试hibernate程序(保存一个人的实例)时,它抛出
org.hibernate.AnnotationException: @OneToOne or @ManyToOne on com.PersonImpl.weapon references an unknown entity: com.Weapon
有解决此问题的解决方案或注释吗?您应该引用
WeaponImpl
而不是WeaponImpl
,因为您的实体类是WeaponImpl
这给了你机会
@OneToOne
@JoinColumn(name = "weapon_id",referencedColumnName = "weapon_id")
private WeaponImpl weapon;
尝试使用
WeaponImpl
而不是像这样使用WeaponImpl
:
@OneToOne(targetEntity = WeaponImpl.class)