Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果值不为null,JPA将执行部分查询_Jpa - Fatal编程技术网

如果值不为null,JPA将执行部分查询

如果值不为null,JPA将执行部分查询,jpa,Jpa,在Java中,以下是一种常见的习惯用法: if( null != obj && obj.getSomeNumber() > 0 ) { ... } 如果为空,则仅执行长度检查!=obj是真的。 但是,在JPA NamedQuery中,这不起作用: @NamedQuery( name = "query" query = "SELECT o FROM SomeObjectList o WHERE o.someObject is not null AND o.someObjec

在Java中,以下是一种常见的习惯用法:

if( null != obj && obj.getSomeNumber() > 0 ) { ... }
如果为空,则仅执行长度检查!=obj是真的。 但是,在JPA NamedQuery中,这不起作用:

@NamedQuery(
name = "query"
query = "SELECT o FROM SomeObjectList o WHERE o.someObject is not null AND o.someObject.someNumber > 0")
(这是我所期望的,因为这在SQL中也不起作用。)

o、 someObject是存储someObject的表的“null”或外键。(表的每列对应于SomeObject的一个属性。)

因此,我想创建一个NamedQuery,它将返回SomeObjectList中没有对象(someObject==null)或someObject.number>0的所有对象。 目前,我获取所有对象并检查自己是否设置了someObject

但是有没有办法在JPA中获得类似的行为,或者我必须对返回的对象执行检查

编辑:添加图形并澄清问题。(感谢詹姆斯。)

我不太明白吗

您甚至不需要“NOTNULL”,只要长度>0,null就不会返回true

另外,你的代码是错误的,长度是一个函数,而不是一个导航

应该是,

SELECT o FROM SomeObject o WHERE LENGTH(o.arry) > 0

或者arry是一种收款关系?在这种情况下,您需要使用大小,并且联接还将过滤缺少的关系。

您需要使用外部联接

请注意,您的查询是错误的,您需要的似乎是AND,否则只需删除null检查

SELECT o FROM SomeObjectList o left join o.someObject so WHERE o.someObject is null OR so.someNumber > 0

“length”应该只是数据库的一列。我选择了这个,所以它可以和我的java比较,但这似乎不是一个好的选择…编辑它。谢谢谢谢你,好像有用。但不应该“不为空”和“为空”或“为空”相同吗?
SELECT o FROM SomeObjectList o left join o.someObject so WHERE o.someObject is null OR so.someNumber > 0