簡體   English   中英

如何顯示用戶和他租用的所有書籍的列表 - SpringBoot、JPA、MySql

[英]How to display User and list of all Books that he rented - SpringBoot, JPA, MySql

I am trying to build a library rest api using Spring boot + Mysql + JPA.

我的數據庫看起來像這樣:

在此處輸入圖像描述

以下是實體、存儲庫和服務:

用戶.java

@Entity
public class User {


    @Id
    @GeneratedValue
    private Integer userId;
    private String name;
    private String surname;
    private String username;
    private String email;
    private String password;

    *all getters and setters*
}

Book.java

@Entity
public class Book {

    @Id
    @GeneratedValue
    private Integer bookId;
    private String title;
    private String ISBN;
    private String author;
    private String issuer;
    private Integer dateOfIssue;
    private Boolean IsRented;

    *all getters and setters*
}

借.java

@Entity
public class Borrow {

    @Id
    @GeneratedValue
    private Integer id;
    private Date takenDate;
    private Date broughtDate;

    @ManyToOne
    @JoinColumn(name="book_id")
    private Book book;

    @ManyToOne
    @JoinColumn(name="user_id")
    private User user;
}

BorrowRepository.java

public interface BorrowRepository extends JpaRepository<Borrow, Integer> {

    public List<Borrow> findByUserUserId(Integer userId);
}

我正在嘗試找到一種方法來顯示用戶和他租借的書籍列表。

我將findByUserUserId方法添加到 `BorrowRepository.

同樣在BorrowService.java我添加了下一行代碼:

@Service
public class BorrowService {

    public List<Borrow> getItemByUser(Integer userId){
        borrowRepo.findByUserUserId(userId);
        return borrowRepo.findAll();
    }

BorrowController.java中添加了下一個:

 @RequestMapping("/user/{id}/borrow")
    public List<Borrow> getAllItemsByUser(@PathVariable Integer userId){
        return service.getItemByUser(userId);
    }

我應該使用@Query 嗎?

任何幫助,將不勝感激。

由於您已經在借用表中使用了 used_id,請嘗試將 findByUserUserId 方法編輯為 findByUserId,假設您已經填充了數據庫,這應該可以工作。

嘗試將方法的名稱更改為“findByUserId”以及 PathVariable 的名稱以匹配參數。

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

相關問題 Springboot + JPA:列出每個字段類型的所有字段名 如何顯示枚舉列表 - SpringBoot 如何將數據從一張表導入另一張表 - SpringBoot JPA /MySQL 如何問用戶是否要重新輸入程序(如果鍵入了字符/字符串而不是數字)? 如何在springboot webservice中列出所有請求參數? 當他訪問網站並以用戶語言顯示頁面時,如何在jsp頁面中獲得用戶區域設置 列表中的 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> SpringBoot DTO + JPA 帶列表<T>財產 如何顯示一天中每個小時的 JSON 列表 - Java,SpringBoot Hibernate:如何將多個聯接表映射到Java對象(用戶的書籍列表)
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM