【发布时间】:2015-01-26 17:49:49
【问题描述】:
我的实体有这个层次结构:
TreeItem
LayerItem extends TreeItem
TypicalItem extends TreeItem
树项:
@Entity
@Table(name = "tree_item")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(
name = "item_type",
discriminatorType = DiscriminatorType.STRING
)
@DiscriminatorValue("tree_item")
public class TreeItem implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
private Long id;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
........
}
继承类型是SINGLE_TABLE。LayerItem 有一个布尔类型的属性“启用”。
图层项目:
@Entity
@DiscriminatorValue("layer_item")
public class LayerItem extends TreeItem {
@Column(nullable = true)
private boolean enabled = false;
@Column
private String position;
@PrePersist
public void prePersist() {
if (JUtil.isEmpty(this.enabled)) //We set default value in case if the value is not set yet.
{
this.enabled = false;
}
}
}
问题是,当我想坚持 TypicalItem(taht 没有 enabled 属性)时,我遇到了这个错误:
org.hibernate.PropertyAccessException: Null value was assigned to a property of primitive type setter of my.app.entity.LayerItem.enabled
我已经给它设置了一个默认值(false),但是没有效果。
【问题讨论】:
标签: java hibernate inheritance nullable hibernate-annotations