Java eclipselink和jpa:选择具有左连接返回的id关联;0“;而是空的
我有一个JPA选择:Java eclipselink和jpa:选择具有左连接返回的id关联;0“;而是空的,java,jpa,jpa-2.0,eclipselink,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
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
有一些设置我可以设置为远离解决方法?如评论中所述,问题在于原语的使用。原语只能存储默认设置为“some value”的值。对于int,这是一个0(long为0,boolean为false,依此类推) 为了表示数据库列为null,相关实体应使用整数对象。这允许设置null,也可以指定值
它应该是一个足够简单的实体更改-使定义为整数id;(如果可以在id中使用大值,则为Long)并更新访问器。什么是
f.id
?类型为“int”,但是,使用“case”我可以验证实际值(null),尝试使用整数而不是允许null的int。