小编The*_*ger的帖子

如何使用 JPA 在查询中多次使用相同的参数?

如何在同一个查询中多次使用同一个参数?这是我的查询:

@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)

sql jpa repository spring-data-jpa spring-boot

8
推荐指数
1
解决办法
7483
查看次数

如何修复“无法自动装配。未找到‘MyRepository’类型的 beans”?

我的项目中有这样的层次结构:

\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\n
Run Code Online (Sandbox Code Playgroud)\n

这是MyRepository界面:

\n
public interface MyRepository extends MongoRepository<String, Integer> {\n}\n
Run Code Online (Sandbox Code Playgroud)\n

这是MyRepositoryTest测试类:

\n
@ExtendWith(SpringExtension.class)\npublic class MyRepositoryTest {\n    ...\n    @Autowired MyRepository myRepository;\n    ...\n}\n
Run Code Online (Sandbox Code Playgroud)\n

该错误发生在测试类中自动装配的 myRepository 实例上。它说Could not autowire. No beans of 'MyRepository' type found。我进行了一些搜索并尝试添加等等,但没有任何帮助@Component@Repository我该如何解决这个问题?

\n

spring repository javabeans autowired spring-boot

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

如果 PostgreSQL 中没有行匹配,如何选择 null?

我有以下查询:

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)

只要至少有一个匹配,就会返回一行,但是如果没有匹配,则不会有任何行。

如果没有匹配,是否可以返回一行空值?

sql postgresql null row

3
推荐指数
1
解决办法
6230
查看次数

MongoDB - 将 $addToSet 与条件一起使用

在组聚合中,如果年龄为 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 岁时添加名字。在这个阶段可以吗?

aggregate set mongodb aggregation-framework

3
推荐指数
1
解决办法
3723
查看次数

MongoDB - 如何向数组中的所有对象添加字段

我有一个文档,其中包含一个名为 的字段info,并且 info 内部有一个名为 的字段datadata是一个对象数组。我想使用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)

我怎么做?

mongodb nosql mongodb-query mongodb-update

3
推荐指数
1
解决办法
4592
查看次数

如何在 MongoDB 聚合中合并来自多个文档的数组而不重复?

我有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' } }

第一个给出错误,因为我将字段名留空(我不知道在那里放什么)。

第二个返回一个合并的数组,但有重复项。

arrays mongodb spring-boot mongotemplate group

2
推荐指数
1
解决办法
2484
查看次数

如何在 C# 中获得最新的整小时减去一小时?

假设 DateTime.Now 是 13:26。我如何从中得到 12:00 ?我需要找到最近的一小时,然后再返回一小时。或者返回一小时,然后找到最新的完整小时,无论哪种方式......我如何在 C# 中实现这一点?

我尝试now.AddHours(-1);删除第一个小时,但我不知道如何返回到 00 分钟。有没有一种好的、干净的方法来做到这一点?

.net c#

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

如何从时间戳中获取小时、日和周的开始时间?

我有以下时间戳:

Timestamp time = new Timestamp(1652039000000L);
Run Code Online (Sandbox Code Playgroud)

这次是"2022-05-08 19:43:20.0"当地时间。有什么方法可以将其变成当前的开始:

  1. 小时:"2022-05-08 19:00:00.0"
  2. 天: "2022-05-08 00:00:00.0"
  3. 星期:"2022-05-02 00:00:00.0"

然后从中减去 UTC 时间,这样巴黎(+2 小时)就会返回:

  1. 小时:"2022-05-08 17:00:00.0"
  2. 天: "2022-05-07 22:00:00.0"
  3. 星期:"2022-05-01 22:00:00.0"

java spring timestamp spring-boot

0
推荐指数
1
解决办法
1256
查看次数

如果键存在,如何替换 Map 的值?

我有这张地图:

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)

我该怎么做呢?

java maps spring-boot

0
推荐指数
1
解决办法
495
查看次数