给定以下JSON,它作为jsonb存储在postgres表中:
{
"object" : {
"array" [
{
"uuid" : "34ad3558-a3e7-43d0-826f-afddce255b20"
}
]
}
}
我有一个工作查询来搜索JSON文档中是否存在字段
值:
select * from my_table
where my_json@>'{"object": {"array" : [{"field": "34ad3558-a3e7-43d0-
826f-afddce255b20"}]}}';
但是,当我试图在JPARepository上使用本机查询在Spring-Data-JPA中复制这个查询时,我总是得到以下异常:
org.springframework.dao.invalidDataAccessapiusageException:位置为[1]的参数不存在
@Query(value = "Select * From my_table"
+ "and my_json@>'{\"object\": {\"array\" : [{\"uuid\": \"?1\"}]}}'",
nativeQuery = true)
Set<MyEntity> myQuery(UUID uuid);
@Query(value = "Select * From my_table"
+ "and my_json@>'{\"object\"\\: {\"array\" \\: [{\"uuid\"\\: \":uuid\"}]}}'",
nativeQuery = true)
Set<MyEntity> myQuery(@Param("uuid") UUID uuid);
@Query(value = "Select * From my_table"
+ "and my_json@>'{\"object\"\\: {\"array\" \\: [{\"uuid\"\\: \":uuid\"}]}}'",
nativeQuery = true)
Set<MyEntity> myQuery(@Param("uuid") String uuid);
还是什么都不起作用。JPA实体如下所示:
@Entity
public class MyEntity {
@Id
private long id;
@Column("my_json")
private MyJson myJson
}
涉及该实体的其他查询可以很好地使用绑定到MyJson实体的jsonb字段。有没有办法让这起作用?
必须在本机查询中强制转换值。
cast(:uuid as UUID)
因此您的查询变成。
@Query(value = "Select * From my_table"
+ "and my_json@>'{\"object\"\\: {\"array\" \\: [{\"uuid\"\\: cast(:uuid as UUID)}]}}'",
nativeQuery = true)
我有一个场景,我想把从JPA存储库中的本机查询中提取的数据映射到自定义对象。 我的存储库代码如下: 我的自定义类代码如下: 但是我在运行应用程序时遇到了以下错误 原因:org。springframework。数据地图。PropertyReferenceException:找不到类型优惠券的属性FindTodayPoffer! 我应该移动名称查询和sql结果映射到我的实体类吗?问题是我不想污染我的实
我在spring boot中与用户和角色有很多对很多的关系。我在数据库中有三个表(Role_utilisateur,users_roles和utilisateurs)。在我的存储库中,ireturn列出了我的名为RoleEntite的实体,它有两个属性(nom和id)。 当我调用函数时 我在java eclipse中得到了这个错误 org.springframework.security.auth
问题内容: 我有实体和 我可以按用户实体获得所有测试: 但是我可以使用哪个查询查找所有测试? 问题答案: 以下方法签名将使你想要: 这是使用Spring Data JPA 的属性表达式功能。签名将转换为。请注意,这将对给定的用户名执行完全匹配。
我正在使用Spring Data JPA,并试图将查询添加到我的存储库中。我试图在没有@Query注释的情况下构建查询,比如: 我的目标是构建这样的查询: 我的问题是OR子句。有没有办法确保有括号?否则,逻辑就不对了。我在这里找到的例子:http://static.springsource.org/spring-data/data-jpa/docs/1.0.0.M1/reference/html/
我有一个LOCATION实体,它包含国家、州和城市。并且我有一个LocationRepository接口定义为: 我想按国家找到所有的州。我可以遵循方法名称标准来查询位置实体的所有内容。如果我想要列表,我需要创建StateRepository接口并在其中查询关于状态的一切吗?如果我可以从LocationRepository中获取它,那么方法是什么样子的?我假设它看起来会像下面这样(当然不起作用)。