小编Yur*_*riy的帖子

MongoDB嵌套查找有3个级别

我需要从数据库中检索整个单个对象层次结构作为JSON.实际上关于实现这一结果的任何其他解决方案的提议将受到高度关注.我决定使用MongoDB及其$ lookup支持.

所以我有三个系列:

派对

{ "_id" : "2", "name" : "party2" }
{ "_id" : "5", "name" : "party5" }
{ "_id" : "4", "name" : "party4" }
{ "_id" : "1", "name" : "party1" }
{ "_id" : "3", "name" : "party3" }    
Run Code Online (Sandbox Code Playgroud)

地址

{ "_id" : "a3", "street" : "Address3", "party_id" : "2" }
{ "_id" : "a6", "street" : "Address6", "party_id" : "5" }
{ "_id" : "a1", "street" : "Address1", "party_id" : "1" }
{ "_id" …
Run Code Online (Sandbox Code Playgroud)

lookup mongodb mongodb-query aggregation-framework

29
推荐指数
2
解决办法
2万
查看次数

Spring Data IN子句添加了额外的括号

我有一个带有'name'列的'Role'表.我需要获取名称为"role1"或"role2"的所有角色.角色存储库方法如下所示:

Set<Role> findByNameIsIn(Set<String> roleNames);
Run Code Online (Sandbox Code Playgroud)

我的数据库只包含'role1'.生成的请求如下所示:

SELECT ID, NAME FROM ROLE WHERE (NAME IN ((?,?)))
    bind => [role1, role2]
Run Code Online (Sandbox Code Playgroud)

请注意参数周围的双括号.结果集为空.当我通过h2控制台手动尝试此查询时 - 也没有结果.以下查询有效:

SELECT ID, NAME FROM ROLE WHERE (NAME IN ('role1', 'role2'))
Run Code Online (Sandbox Code Playgroud)

我的集完全包含两个元素.应支持集作为参数类型.请参阅:https://dzone.com/refcardz/core-spring-data

最后一个问题是:我错过了什么?

java spring spring-mvc spring-data spring-data-jpa

6
推荐指数
1
解决办法
1131
查看次数

HAPI HL7 Validator不验证已解析的消息

我一次解析并验证HL7消息的方案按预期工作:

HapiContext hapiContext = new DefaultHapiContext();
PipeParser parser = hapiContext.getPipeParser();
Message message = parser.parse("MSH|^~\\&|MedSeries|CAISI_1-2|PLS|3910|200903230934||ADT^A31^ADT_A05|75535037-1237815294895|P^T|2.5\r"
            + "EVN|A31|200903230934345345345345345\r"
            + "PID|1||29^^CAISI_1-2^PI~\"\"||Test300^Leticia^^^^^L||19770202|M||||||||||||||||||||||");
Run Code Online (Sandbox Code Playgroud)

异常(这是一种有效的行为):

Exception in thread "main" ca.uhn.hl7v2.model.DataTypeException: ca.uhn.hl7v2.validation.ValidationException: Validation failed: Primitive value '200903230934345345345345345' requires to be empty or a HL7 datetime string at EVN-2(0)
Run Code Online (Sandbox Code Playgroud)

但是当我首先尝试解析HL7消息然后验证时 - 验证方法返回true并且不抛出任何异常:

HapiContext hapiContext = new DefaultHapiContext();
hapiContext.setValidationContext((ValidationContext) ValidationContextFactory.noValidation());
PipeParser parser = hapiContext.getPipeParser();
Message message = parser.parse("MSH|^~\\&|MedSeries|CAISI_1-2|PLS|3910|200903230934||ADT^A31^ADT_A05|75535037-1237815294895|P^T|2.5\r"
            + "EVN|A31|200903230934345345345345345\r"
            + "PID|1||29^^CAISI_1-2^PI~\"\"||Test300^Leticia^^^^^L||19770202|M||||||||||||||||||||||");


hapiContext.setValidationRuleBuilder(new DefaultValidationBuilder());
System.out.println(hapiContext.getMessageValidator().validate(message));
Run Code Online (Sandbox Code Playgroud)

我需要这个以在使用message.generateACK()方法验证失败的情况下生成确认消息.

hl7 hapi

5
推荐指数
1
解决办法
584
查看次数