【发布时间】:2015-07-23 01:11:15
【问题描述】:
类具有可以是两种类类型之一的属性,这就是为什么我尝试创建类类型实现的接口
@Entity
@Table(name = "users")
public class User{
@Id
@Column(name="id")
@GeneratedValue(strategy=GenerationType.AUTO)
private Long userID;
@Column(name="email")
private String email;
@OneToOne(mappedBy = "user")
private Login login;
... getters/setters
@MappedSuperclass
public interface Login {
User user = new User();
}
@Entity
@Table(name = "user_logins_social")
@IdClass(UserLoginSocialID.class)
public class UserLoginSocial implements Login{
@OneToOne
@JoinColumn(name="uid")
private User user;
...
@Entity
@Table(name = "user_logins_native")
public class UserLoginNative implements Login{
@OneToOne
@JoinColumn(name="uid")
private User user;
...
所以我不能使用目标实体,因为这两个类都可以使用。这是错误堆栈:org.hibernate.AnnotationException:Unknown mappedBy in:model.User.login,引用的属性未知:model.Login.user。请帮帮我
【问题讨论】:
-
我认为对于这种情况你可能需要
Abstarct Class,因为你需要Login接口中的user对象的Getter 和setter