如何使用Hibernate在一个表中添加基类和后代类?
基础课
public class Id{
protected int id
}
后裔类
public classs User exetends Id{
public String username;
public String password;
}
在一个表USERS中具有属性:id,username,password。
答案 0 :(得分:0)
首先,您需要使用@Entity
标记它们以表明它们是表格,然后在顶层设置表格名称@Table
。要使用继承,您需要选择策略:对于此实例,您需要SINGLE_TABLE。然后,为了选择正确的类型,需要@DiscriminatorColumn
,设置列名和鉴别器的类型 - 在这种情况下,我选择了 INTEGER 。您还需要添加类型注释updatable = false和insertable = false,以便不能修改它们。
@Entity
@Table(name = "TABLE_NAME")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "TYPE",discriminatorType = DiscriminatorType.INTEGER)
public class Id {
@Column(name="TYPE", insertable=false, updatable=false)
private Integer type;
}
在子类上,您需要使用@Entity
和@DiscriminatorValue
(在本例中为1)标记它们。
@Entity
@DiscriminatorValue(value = "1")
public classs User exetends Id{
public String username;
public String password;
}
答案 1 :(得分:0)
根据我的理解。
您希望拥有Base
个实体。并且Base
实体应该由其他Descendant
实体扩展。换句话说,Descendant
应该具有Base实体的所有属性。此设计的一个用例是为Descendant
实体类中的所有Base
类提供公共属性(id,createdDate,updatedDate)。
一种方法是:
BaseEntity(基类)
@MappedSuperclass
public class BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
//..setter and getters
}
用户(后代类)
@Entity
@Table(name = "user")
public class User extends BaseEntity {
@Column(name = "name")
private String name; //User specific properties
//..setters and getters here
}