Java 单表策略没有';不工作的冬眠
我试图使用Hibernate将类层次结构映射到单个表,而不创建一个表。我添加了@inheritation(strategy=InheritanceType.SINGLE_TABLE),但在base中有单独的表Java 单表策略没有';不工作的冬眠,java,hibernate,Java,Hibernate,我试图使用Hibernate将类层次结构映射到单个表,而不创建一个表。我添加了@inheritation(strategy=InheritanceType.SINGLE_TABLE),但在base中有单独的表 @MappedSuperclass @Inheritance(strategy=InheritanceType.SINGLE_TABLE) public abstract class User implements UserDetails { @Id @GeneratedValue
@MappedSuperclass
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
public abstract class User implements UserDetails {
@Id @GeneratedValue
private int id;
...
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
...
}
@Entity
public class Manager extends User{
...
}
@Entity
public class Administrator extends User{
...
}
怎么了?您的用户类应该是
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(field = "type", discriminatorType = DiscriminatorType.STRING)
public class User implements UserDetails {
/* your original stuff */
}
然后,您需要映射扩展类,如下所示:
@Entity
@DiscriminatorValue("manager")
public class Manager extends User { /* stuff */ }
@Entity
@DiscriminatorValue("administrator")
public class Administrator extends User { /* stuff */ }
这将有效地创建一个表,其中包含来自User
、Manager
和Administrator
的所有字段,使用Hibernate添加的名为type
的特殊字段,该字段将保存Manager
或Administrator
的值