简体   繁体   English

Spring JPA findBy存储库中如何忽略重音符号?

[英]How to ignore accents in Spring JPA findBy repository?

Lets say we have this repository: 可以说我们有这个存储库:

public interface DeviceTypeRepository extends CrudRepository<DeviceType, Integer>, JpaSpecificationExecutor<DeviceType> {    
    public Iterable<DeviceType> findByNameContaining(String name);    
}

How to obtain the same results by ignoring when user mistypes accents ni search filter? 如何通过忽略用户在搜索过滤器中输入错误的重音来获得相同的结果?

Examples: João | Joao | JOÃO 示例: João | Joao | JOÃO João | Joao | JOÃO João | Joao | JOÃO , Marcio | Márcio João | Joao | JOÃOMarcio | Márcio Marcio | Márcio etc. Marcio | Márcio

There is no way to do that within Spring's built-in capabilities. Spring的内置功能无法做到这一点。 You can consider using Elastic Search to do that, there is an article on this subject You Have an Accent . 您可以考虑使用Elastic Search做到这一点,关于此主题的文章You Have a Accent

Another way is to not store accent letters in DB and perform mapping before executing SQL request or perform mapping on DB side using custom SQL function - but it's a too cumbersome and fragile solution. 另一种方法是在执行SQL请求之前不将重音字母存储在数据库中并执行映射,或者使用自定义SQL函数在数据库端执行映射-但这是一个麻烦且脆弱的解决方案。

列表中的 findBy 属性<object> SpringBoot JPA 存储库<div id="text_translate"><p>我的数据库 Story 和 Tag 中的两个对象之间存在一对多关系。</p><p> 我希望能够获取所有带有标签 object 和字符串名称的 Story 对象。</p><p> 故事.java</p><pre> @Entity @Table(name = "stories") public class Story { @Id @GeneratedValue private Long id; @Column(name = "title") private String title; @JsonIgnoreProperties({"story"}) @OneToMany(mappedBy = "story", fetch = FetchType.LAZY) private List&lt;Tag&gt; tags; public Story(String title){ this.title = title; } public Story(){ } // getters &amp; setters }</pre><p> 标签.java</p><pre> @Entity @Table(name = "tags") public class Tag { @Id @GeneratedValue private Long id; @Column(name = "name") private String name; @JsonIgnoreProperties({"tags"}) @ManyToOne @JoinColumn(name = "story_id", nullable = false) @Cascade(org.hibernate.annotations.CascadeType.SAVE_UPDATE) private Story story; public Tag(String name, Story story){ this.name = name; this.story = story; } public Tag(){ } /// getters &amp; setters }</pre><p> StoryController.java</p><pre> @RestController public class StoryController { @Autowired StoryRepository storyRepository; @CrossOrigin(origins = "http://localhost:8080/api") @GetMapping(value = "/stories") public ResponseEntity&lt;List&lt;Story&gt;&gt; getAllStories(){ return new ResponseEntity&lt;&gt;(storyRepository.findAll(), HttpStatus.OK); } @CrossOrigin(origins = "http://localhost:8080/api") @GetMapping(value="/stories/tagSearch/{name}") public ResponseEntity&lt;Story&gt; getStoryByTag(@PathVariable String name) { return new ResponseEntity(storyRepository.findByTags_Name(name), HttpStatus.OK); } @CrossOrigin(origins = "http://localhost:8080/api") @GetMapping(value="/stories/{id}") public ResponseEntity&lt;Story&gt; getStory(@PathVariable Long id) { return new ResponseEntity(storyRepository.findById(id), HttpStatus.OK); } }</pre><p> StoryRepository.java</p><pre> @Repository public interface StoryRepository extends JpaRepository&lt;Story, Long&gt; { public List&lt;Story&gt; findByTags_Name(String name); }</pre><p> 尝试通过浏览器查询时,转到地址 localhost:8080/api/stories/tagSearch/?name="tag" 数据库返回数据库中的所有对象,而不是我要查找的结果。</p></div></object> - findBy property in List<Object> SpringBoot JPA Repository

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Spring 引导应用程序中的 Jpa 存储库按问题查找 - Jpa Repository in Spring boot app findBy issue Spring Data JPA/Boot: findBy ... 或 - Spring Data JPA/Boot: findBy ... or Spring 存储库 findBy 连接表 - Spring repository findBy join table 如何在 spring 引导中由 @OneToMany 注释映射的列上使用 JPA findBy - How to use JPA findBy on column mapped by @OneToMany annotation in spring boot 如何在Spring Boot中使存储库findBy()具有多个字段? - How to make repository findBy() with more than one field in Spring Boot? Spring 数据 jpa 存储库查找通过返回 null 即使数据库中存在数据 - Spring data jpa repository findBy returning null even if data present in DB Spring 数据 Redis。 JPA 存储库 findBy 有时无法获取现有记录 - Spring Data Redis. JPA Repository findBy sometimes fails to fetch existing record 列表中的 findBy 属性<object> SpringBoot JPA 存储库<div id="text_translate"><p>我的数据库 Story 和 Tag 中的两个对象之间存在一对多关系。</p><p> 我希望能够获取所有带有标签 object 和字符串名称的 Story 对象。</p><p> 故事.java</p><pre> @Entity @Table(name = "stories") public class Story { @Id @GeneratedValue private Long id; @Column(name = "title") private String title; @JsonIgnoreProperties({"story"}) @OneToMany(mappedBy = "story", fetch = FetchType.LAZY) private List&lt;Tag&gt; tags; public Story(String title){ this.title = title; } public Story(){ } // getters &amp; setters }</pre><p> 标签.java</p><pre> @Entity @Table(name = "tags") public class Tag { @Id @GeneratedValue private Long id; @Column(name = "name") private String name; @JsonIgnoreProperties({"tags"}) @ManyToOne @JoinColumn(name = "story_id", nullable = false) @Cascade(org.hibernate.annotations.CascadeType.SAVE_UPDATE) private Story story; public Tag(String name, Story story){ this.name = name; this.story = story; } public Tag(){ } /// getters &amp; setters }</pre><p> StoryController.java</p><pre> @RestController public class StoryController { @Autowired StoryRepository storyRepository; @CrossOrigin(origins = "http://localhost:8080/api") @GetMapping(value = "/stories") public ResponseEntity&lt;List&lt;Story&gt;&gt; getAllStories(){ return new ResponseEntity&lt;&gt;(storyRepository.findAll(), HttpStatus.OK); } @CrossOrigin(origins = "http://localhost:8080/api") @GetMapping(value="/stories/tagSearch/{name}") public ResponseEntity&lt;Story&gt; getStoryByTag(@PathVariable String name) { return new ResponseEntity(storyRepository.findByTags_Name(name), HttpStatus.OK); } @CrossOrigin(origins = "http://localhost:8080/api") @GetMapping(value="/stories/{id}") public ResponseEntity&lt;Story&gt; getStory(@PathVariable Long id) { return new ResponseEntity(storyRepository.findById(id), HttpStatus.OK); } }</pre><p> StoryRepository.java</p><pre> @Repository public interface StoryRepository extends JpaRepository&lt;Story, Long&gt; { public List&lt;Story&gt; findByTags_Name(String name); }</pre><p> 尝试通过浏览器查询时,转到地址 localhost:8080/api/stories/tagSearch/?name="tag" 数据库返回数据库中的所有对象,而不是我要查找的结果。</p></div></object> - findBy property in List<Object> SpringBoot JPA Repository JPA 将存储库 findBy 与实体对象一起使用 - JPA use repository findBy with an entity object 在 JPA 中使用 findBy 时如何忽略某些列 - How to ignore certain column from being fetched when using findBy.. in JPA
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM