2

我有一个 JPA 选择:

select c.name, f.id from Child c left join c.father

预期结果是:

Child 1  |  1
Child 2  |  2
Orphan   | null

但我抓住了

Child 1  |  1
Child 2  |  2
Orphan   |  0  // ZERO ?

我能够解决这个选择

select c.name, case when (f.id is null) then null else f.id end from Child c left join c.father

我可以设置一些设置以避开解决方法?

4

1 回答 1

0

正如评论中提到的,问题在于原语的使用。基元只能存储默认设置为“某个值”的值。在 int 的情况下,这是一个 0(long 为 0,boolean 为 false 等等)。

为了将数据库列表示为空,相关实体应使用 Integer 对象。这允许设置 null,也可以分配值。

它应该是对实体的一个足够简单的更改——将定义定义为整数 id;(或 Long 如果可以在 id 中使用大值)并更新访问器。

于 2013-09-25T13:46:23.440 回答