ZBLOG

spring data Elasticsearch jpa 无法 findBy 大驼峰的属性

与Spring Data JPA不同的是,Spring Data Elasticsearch默认使用下划线分隔符将实体类属性映射到索引中的字段名称。因此,如果您定义了一个大驼峰命名的属性,例如:userName,它会被映射到Elasticsearch索引中的”user_name”字段。

在使用Spring Data Elasticsearch进行查询时,可以通过使用下划线来访问这些属性。例如,要查找所有用户名为”admin”的用户:

public interface UserRepository extends ElasticsearchRepository<User, Long> {
    List<User> findByUser_Name(String userName);
}

请注意,在方法名称中使用”_Name”而不是大驼峰形式的”userName”。

如果您希望在Elasticsearch中使用与实体类相同的大驼峰命名法进行查询,则需要在@Entity注解中指定@Document注解,并设置其indexName属性为索引名称和type属性为文档类型:

@Entity
@Document(indexName = "user_index", type = "user")
public class User {
    //...
}

然后,在@Repository接口中编写自定义查询方法并使用@Query注解指定查询语句:

public interface UserRepository extends ElasticsearchRepository<User, Long> {
    @Query("{\"match\": {\"userName\": \"?0\"}}")
    List<User> findByUserName(String userName);
}

注意,在@Query注解中使用实体类属性名称而不是列名或下划线分隔符,并且需要按照Elasticsearch DSL规范编写JSON格式的查询语句。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=3580

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?