[英]Hibernate native query method
因此,我正在做一個分配,其中有2個實體- User
and Car
分別具有OneToMany關系。
因此, User
將擁有Cars
列表。
我需要實現一個控制器方法,該方法將顯示用戶通過UserId(這是Car實體的外鍵)擁有的所有汽車
方法是: [GET] - /users/{id}/cars
現在,如果我只是刪除所有用戶,那么我將得到原始的JSON smth:
{
"id":"1",
"name":"Taavet Prulskih",
"cars":[{
"Id":"1",
"make":"BMW",
"model":"760",
"numberplate":"123FFF"
},
{
"Id":"2",
"make":"Opel",
"model":"Astra",
"numberplate":"789BFX"
}]
}
但是我不想擁有有關User的數據,因為沒有必要,因為我已經在get請求中指定了要選擇某個用戶的信息。 因此,我不想只擁有某些用戶擁有的汽車列表。
我正在尋找的JSON輸出是:
{
"Id":"1",
"make":"BMW",
"model":"760",
"numberplate":"123FFF"
},
{
"Id":"2",
"make":"Opel",
"model":"Astra",
"numberplate":"789BFX"
}
ATM上有一個CarRepository,它通過以下方法擴展了JpaRepository:
@Query(value = "SELECT * FROM Cars c where c.id = :id", nativeQuery = true)
Optional<Car> findByUserId(@Param("id") Long id);
但是由於某種原因,我收到了“ java.util.NoSuchElementException:無值”異常。 嘗試使用findByUserId查詢方法時。
控制器部分不起作用:
@GetMapping("/users/{id}/cars")
public ResponseEntity<Car> getAllCarsByUserId(@PathVariable("id") Long id)
{
return ResponseEntity.ok(carRepository.findByUserId(id).get());
}
倉庫:
public interface CarRepository extends JpaRepository<Car, Long> {
@Query(value = "SELECT * FROM Cars c where c.user_id = :id", nativeQuery = true)
List<Car> findByUserId(@Param("id") Long id);
}
您能幫助我解決這個問題嗎?
先感謝您! :)
這是我對您要尋找的內容的理解:
知識庫
@Repository
public interface CarRepository extends JpaRepository<Car, Long> {
@Query(value = "SELECT * FROM T_CARS c where c.USER_ID = :id", nativeQuery = true)
Collection<Car> findByUserId(@Param("id") Long id);
}
控制者
class UserController {
@Autowired
private CarRepository carRepository;
@GetMapping("/users/{id}/cars")
public ResponseEntity<Collection<Car>> getAllCarsByUserId(@PathVariable("id") Long id) {
return ResponseEntity.ok(carRepository.findByUserId(id));
}
}
我希望它對您有用:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.