所以我有這個端點,它應該獲取給定用戶所在的板串列,但由于某種原因,它總是只回傳 1 個值。
語境:
//BoardController.java
@GetMapping
@ApiOperation(
value = "Retrieves all boards",
httpMethod = "GET",
response = Page.class,
code = 200
)
public List<BoardDto> findBoardsForUser(@RequestParam(value = "user", defaultValue = "0")
final Long userId) {
var boards = boardService.findAllForUser(userId);
System.out.println(boards.size());
return boards.stream().map(boardMapper::toDto).collect(Collectors.toList());
}
//BoardService.java
public List<Board> findAllForUser(Long userId) {
return boardRepository.findBoardsByUser(userId);
}
//BoardRepository.java
@Repository
@Transactional
public interface BoardRepository extends JpaRepository<Board, Long> {
@Query("SELECT b FROM Board b, BoardUser bu where b.id = bu.board.id and bu.id = :userId")
List<Board> findBoardsByUser(Long userId);
}
問題:當我在資料庫中有兩條記錄使用相同的 select 陳述句可以正常檢索時,Hibernate 是否只檢索一條記錄?
uj5u.com熱心網友回復:
@Query("SELECT b FROM BoardUser bu JOIN bu.board b where bu.id = :userId")
uj5u.com熱心網友回復:
這似乎是不可能的。如果使用 ajava.util.Set并且未定義唯一 ID,我可以理解這一點,但是您使用的是List. 請添加到 Spring Boot 配置以查看日志輸出中的所有已執行陳述句:
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
生成的 SQL 的外觀肯定有所不同。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/313891.html
