简体   繁体   English

JPA存储库findBy具有多个或运算符的方法签名?

[英]Jpa repository findBy method signature with multiple or operators?

I have Entity class for Product like this: 我有这样的产品的实体类:

@Entity
public class Product {

  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private Integer ID_product;

  @NotNull
  private String prodName;

  @NotNull
  private String prodDesc;

  @NotNull
  private Integer price;

  @NotNull
  private String prodBrand;

  @NotNull
  private String prodImage;

  @ManyToOne
  private Category category;

I want to make the controller look like this: 我想使控制器看起来像这样:

List<Product> productList = productRepository.findByProdNameOrProdBrandContains(search);
model.addAttribute("products" , productList);

How do I wrote findBy methods in my Repository if i want to search the keyword of prodName OR prodBrand? 如果要搜索prodName或prodBrand的关键字,如何在存储库中编写findBy方法? I'm imagining something like this: 我在想像这样的事情:

List<Product> findByProdNameOrProdBrand(String prodName || String prodBrand);

Do I have to create different function/ model or something, and if so, how can i use both fucntion/ model in my thymeleaf? 我是否必须创建不同的功能/模型或其他东西,如果是的话,如何在百里香叶中同时使用两种功能/模型? Any help is appreciated. 任何帮助表示赞赏。 Thank you in advance. 先感谢您。

Just create the following method in repository: 只需在存储库中创建以下方法:

List<Product> findByProdNameOrProdBrand(String prodName, String prodBrand);

But I suggest you to switch to Sepcification<T> when query with more than 3 conditions. 但是我建议您在查询3个以上条件时切换到Sepcification<T>

列表中的 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.

相关问题 带有多个 in 运算符的 crudrepository findBy 方法签名? - crudrepository findBy method signature with multiple in operators? Spring Jpa - 在代码中使用多个 findby 方法 - Spring Jpa - play with multiple findby method in code Spring Data Jpa 多个 findBy 查询的一种方法 - Spring Data Jpa One method for multiple findBy Queries 列表中的 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 Spring 引导应用程序中的 Jpa 存储库按问题查找 - Jpa Repository in Spring boot app findBy issue 元组列表的crudrepository findBy方法签名 - crudrepository findBy method signature for list of tuples JPA findBy在方法名称中具有逻辑条件 - JPA findBy with logical condition in method name JPA findBy 方法总是转到 orElseThrow - JPA findBy method always goes to orElseThrow 什么是对多个字段使用findBy的Spring Data JPA方法,并对所有字段使用Containing子句 - What is the Spring Data JPA method to use findBy for multiple fields and also use Containing clause for all the fields
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM