Ale*_*lex 5 inheritance hibernate jpa
我基本上有以下几个类:
@Entity
@Table( name="user" )
@Inheritance( strategy = InheritanceType.JOINED )
public abstract class User implements Serializable
{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue( strategy = GenerationType.IDENTITY )
@Column( name = "id" )
private Long id;
@Column( name = "email_address" )
private String emailAddress;
/* getters and setters not shown */
}
Run Code Online (Sandbox Code Playgroud)
和
@Entity
@Table( name="admin" )
public class Admin extends User implements Serializable
{
private static final long serialVersionUID = 1L;
@Column( name = "role" )
private String role;
/* getters and setters not shown */
}
Run Code Online (Sandbox Code Playgroud)
我希望Hibernate默认使用表DTYPE varchar(31)中存在的user列.当我的代码尝试持久保存新的Admin对象时,我看到以下内容已登录到控制台:
Hibernate: insert into user (email_address) values (?)
Hibernate: insert into admin (role) values (?)
Run Code Online (Sandbox Code Playgroud)
因此,Hibernate不会尝试设置user.DTYPE列,并且它在数据库中保持为NULL.我预计它会被设置为Admin.
我究竟做错了什么?我也曾尝试明确设置@DiscriminatorColumn的用户类@DiscriminatorValue的Admin类(也尝试增加用户一样),但无济于事.
| 归档时间: |
|
| 查看次数: |
4079 次 |
| 最近记录: |