我有以下映射 MySQL 表的类:
@Entity
@Table(name = "category")
public class Category {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name = "id")
private long id;
@Column(name = "parent_id")
private long parentId;
在处理 parent_id
列具有 NULL 值的列时,我收到以下错误:
信息:HHH000327:执行加载命令时出错:org.hibernate.PropertyAccessException:空值已分配给 com.blogspot.symfonyworld.wealthylaughingduck.model.Category.parentId 的原始类型 setter 的属性
这只是一个java错误:NULL不能分配给long
类型(private longparentId
)。我找不到任何提示如何克服这个问题,我只能想到用 Long
替换 long
。这是一个好主意还是可能有一些内置的 hibernate 注释或任何机制来执行此特定操作?
最佳答案
您将类属性定义为基元(long),但您的数据库表包含相应列的空值。提供程序 (Hibernate) 不会将 null 映射到原语,因为映射不明确。
如果您的数据可能包含空值,您需要使用等效的包装类(在本例中为 Long)。
@Entity
@Table(name = "category")
public class Category {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name = "id")
private long id;
@Column(name = "parent_id")
private Long parentId;
}
关于java - 带注释的 Hibernate 映射 id/长外键到可为空列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15603717/