Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.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
Java Ebean-按UUID列类型中UUID的一部分查找_Java_Playframework_Orm_Uuid_Ebean - Fatal编程技术网

Java Ebean-按UUID列类型中UUID的一部分查找

Java Ebean-按UUID列类型中UUID的一部分查找,java,playframework,orm,uuid,ebean,Java,Playframework,Orm,Uuid,Ebean,从历史原因来看,我们有以下带有几个UUID值的ORM模型。是的,我知道。。我们必须为用户实现新的前端,用户只能写部分UUID(打印在盒子、纸张等上),用于手动验证(工厂问答)。通常情况下,这是通过QR阅读器完成的,但在某些情况下,无法对其进行扫描。所以用户可以写前10个字符或最后6个字符 !!->我们不能改变这个模型的任何东西。(公司…) 我为什么这么问。当我们试图查找包含这部分UUID的对象列表时,Ebean中的错误参数类型出现异常 Caused by: org.postgresql.util

从历史原因来看,我们有以下带有几个UUID值的ORM模型。是的,我知道。。我们必须为用户实现新的前端,用户只能写部分UUID(打印在盒子、纸张等上),用于手动验证(工厂问答)。通常情况下,这是通过QR阅读器完成的,但在某些情况下,无法对其进行扫描。所以用户可以写前10个字符或最后6个字符

!!->我们不能改变这个模型的任何东西。(公司…)

我为什么这么问。当我们试图查找包含这部分UUID的对象列表时,Ebean中的错误参数类型出现异常

Caused by: org.postgresql.util.PSQLException
Cause message: ERROR: function lower(uuid) does not exist
  Rada: No function matches the given name and argument types. You might need to add explicit type casts.
我正在使用ORM查询:

Query<Model_OrderCross > query = Ebean.find(Model_OrderCross.class);

// Where order_b is something like "f223274c-51" from Full UUID "f223274c-51ca-4489-a5b2-7d3b29887cfb" 
if (request.order_b != null) {       
    query.where().icontains("order_b", request. order_b);
}

if (request.order_c != null) {       
    query.where().icontains("order_c", request. order_c);
}
Query Query=Ebean.find(Model\u OrderCross.class);
//其中,订单_b类似于完整UUID“f223274c-51ca-4489-a5b2-7d3b29887cfb”中的“f223274c-51”
如果(request.order_b!=null){
query.where().icontains(“order_b”,request.order_b);
}
如果(request.order_c!=null){
query.where().icontains(“order_c”,request.order_c);
}
  • 对于普通字符串或文本值,。icontains(..)起作用

根据PostgreSQL文档部分(表9.8),函数
lower(string)
接受字符串文字并“将[a]字符串转换为小写”表示

正如异常消息所说

错误:函数下限(uuid)不存在

因此,您必须制定标准查询,以获取
UUID
值的字符串表示,例如:

query.where().icontains("order_b", request. order_b.toString());
这应该能奏效。请注意末尾的
toString()
,它将转换为字符串文字。的JavaDoc中描述了转换的详细信息

为了便于参考,我添加了您在代码片段中应用的方法的JavaDoc链接。在内部,它“使用
lower()
函数使表达式不区分大小写”


希望有帮助。

根据PostgreSQL文档部分(表9.8),函数
lower(string)
接受字符串文字并“将[a]字符串转换为小写”表示

正如异常消息所说

错误:函数下限(uuid)不存在

因此,您必须制定标准查询,以获取
UUID
值的字符串表示,例如:

query.where().icontains("order_b", request. order_b.toString());
这应该能奏效。请注意末尾的
toString()
,它将转换为字符串文字。的JavaDoc中描述了转换的详细信息

为了便于参考,我添加了您在代码片段中应用的方法的JavaDoc链接。在内部,它“使用
lower()
函数使表达式不区分大小写”

希望能有帮助