eclipselink和jpa:选择与左连接的id关联返回“0”而不是null

时间:2013-09-18 19:44:53

标签: java jpa jpa-2.0 eclipselink

我有一个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

我可以设置一些设置以保持解决方法吗?

1 个答案:

答案 0 :(得分:0)

如评论中所述,问题在于使用原语。基元只能将默认值设置为“某个值”。在int的情况下,这是一个0(long将为0,boolean将为false,依此类推)。

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

对实体来说应该是一个很容易的改变 - 使定义整数id; (如果id中可以使用大值,则为Long)并更新访问者。