如何在同一个查询中多次使用同一个参数?这是我的查询:
@Query(value = """
SELECT * FROM person WHERE first_name = ? or last_name = ?
""", nativeQuery = true)
List<Person> findPerson(String name);
Run Code Online (Sandbox Code Playgroud)
我需要在查询中使用“name”参数两次,该怎么做?
注意:这只是一个虚拟示例,供我理解逻辑。
我试过这个:
@Query(value = """
SELECT * FROM person WHERE first_name = ?1 or last_name = ?1
""", nativeQuery = true)
List<Person> findPerson(String name);
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
org.postgresql.util.PSQLException: ERROR: syntax error at or near "$1"
Run Code Online (Sandbox Code Playgroud)
我也尝试过这个:
@Query(value = """
SELECT * FROM person WHERE first_name = :name or last_name = :name
""", nativeQuery = true)
List<Person> findPerson(@Param("name") String …Run Code Online (Sandbox Code Playgroud) 我的项目中有这样的层次结构:
\n\xe2\x96\xbc server\n \xe2\x96\xbc myproject\n \xe2\x96\xbc src\n \xe2\x96\xbc main\n \xe2\x96\xbc java\n \xe2\x96\xbc rest\n \xe2\x96\xbc repository\n \xe2\x92\xbe MyRepository\n \xe2\x96\xb6 resources\n \xe2\x96\xbc test\n \xe2\x96\xbc java\n \xe2\x96\xbc rest\n \xe2\x92\xb8 MyRepositoryTest\nRun Code Online (Sandbox Code Playgroud)\n这是MyRepository界面:
\npublic interface MyRepository extends MongoRepository<String, Integer> {\n}\nRun Code Online (Sandbox Code Playgroud)\n这是MyRepositoryTest测试类:
\n@ExtendWith(SpringExtension.class)\npublic class MyRepositoryTest {\n ...\n @Autowired MyRepository myRepository;\n ...\n}\nRun Code Online (Sandbox Code Playgroud)\n该错误发生在测试类中自动装配的 myRepository 实例上。它说Could not autowire. No beans of 'MyRepository' type found。我进行了一些搜索并尝试添加等等,但没有任何帮助@Component。@Repository我该如何解决这个问题?
我有以下查询:
SELECT c.customer_id
FROM order o
JOIN customer c USING (customer_id)
WHERE c.time >= '2021-01-01 10:00:00' AND c.time < '2021-01-01 11:00:00'
AND (0 IN (22) OR o.product_id IN (22))
LIMIT 1
Run Code Online (Sandbox Code Playgroud)
只要至少有一个匹配,就会返回一行,但是如果没有匹配,则不会有任何行。
如果没有匹配,是否可以返回一行空值?
在组聚合中,如果年龄为 20,我只是尝试将名称添加到集合中:
假设我有以下两个文档:
_id: ...
timestamp: ...
name: Max
age: 20
_id: ...
timestamp: ...
name: Brian
age: 21
Run Code Online (Sandbox Code Playgroud)
现在我正在尝试将这些进行分组,并$group尝试将所有 20 岁的人的名字添加到一个集合中:
{
$group: {
_id: {
bins: {
$dateTrunc: {
date: '$timestamp',
unit: 'week',
binSize: 1
}
}
},
'NamesWithAge20': {
$addToSet: '$name'
}
}
}
Run Code Online (Sandbox Code Playgroud)
我只对“NamesWithAge20”集感兴趣。在这段代码中,现在 Max 和 Brian 都被添加到集合中,但我想引入一个条件,仅在年龄为 20 岁时添加名字。在这个阶段可以吗?
我有一个文档,其中包含一个名为 的字段info,并且 info 内部有一个名为 的字段data。data是一个对象数组。我想使用updateManyisActive: false为 data 中的每个对象添加一个新的布尔字段。
这就是现在的样子
{
info: {
data: [{
"name": "Max"
},
{
"name": "Brian"
},
...
]
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我要的:
{
info: {
data: [{
"name": "Max",
"isActive": false
},
{
"name": "Brian",
"isActive": false
},
...
]
}
}
Run Code Online (Sandbox Code Playgroud)
我怎么做?
我有3个文件:
{
"id": 1,
"user": "Brian1",
"configs": [
"a",
"b",
"c",
"d"
]
}
----
{
"id": 2,
"user": "max_en",
"configs": [
"a",
"h",
"i",
"j"
]
}
----
----
{
"id": 3,
"user": "userX",
"configs": [
"t",
"u",
"s",
"b"
]
}
Run Code Online (Sandbox Code Playgroud)
我想将所有“configs”数组合并到一个数组中而不重复,如下所示:
{
"configs": [
"a",
"b",
"c",
"d",
"h",
"i",
"j",
"t",
"u",
"s",
]
}
Run Code Online (Sandbox Code Playgroud)
我尝试过以下方法:
Aggregation.group("").addToSet("configs").as("configs")和{ _id: "", 'configs': { $addToSet: '$configs' } }
第一个给出错误,因为我将字段名留空(我不知道在那里放什么)。
第二个返回一个合并的数组,但有重复项。
假设 DateTime.Now 是 13:26。我如何从中得到 12:00 ?我需要找到最近的一小时,然后再返回一小时。或者返回一小时,然后找到最新的完整小时,无论哪种方式......我如何在 C# 中实现这一点?
我尝试now.AddHours(-1);删除第一个小时,但我不知道如何返回到 00 分钟。有没有一种好的、干净的方法来做到这一点?
我有以下时间戳:
Timestamp time = new Timestamp(1652039000000L);
Run Code Online (Sandbox Code Playgroud)
这次是"2022-05-08 19:43:20.0"当地时间。有什么方法可以将其变成当前的开始:
"2022-05-08 19:00:00.0""2022-05-08 00:00:00.0""2022-05-02 00:00:00.0"然后从中减去 UTC 时间,这样巴黎(+2 小时)就会返回:
"2022-05-08 17:00:00.0""2022-05-07 22:00:00.0""2022-05-01 22:00:00.0"我有这张地图:
Map<String, String> myMap = new HashMap<>();
Run Code Online (Sandbox Code Playgroud)
我正在尝试检查这张地图是否有一把名为“Brian”的钥匙。如果 - 并且仅当 - 确实如此,我想用“Hello”替换该值。
如果我理解正确的话,该computeIfPresent方法正是这样做的,但它需要一个remappingFunction作为第二个参数,而我只想输入一个简单的值。
我试过这个:
myMap.computeIfPresent("Brian", "Hello");
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?