0
我開始使用Spring引導RESTful系統上刪除。我有兩個表「用戶」,並且有一箇中間表「user_permission」,它不僅具有外鍵id_user和id_permission一個多一對多的關係「權限」。春天JPA實現POST在中間表
我已經設法讓它顯示用戶從GET到「users/{id}/permissions」的權限,但我仍然不知道如何添加與POST的關係或使用DELETE刪除它。我試過用原生Querys來做,但我讀到JPA中不存在INSERT。有關如何實施它的任何建議?
我想要做的是使用POST在用戶/ {id} /權限/ {id} 上創建關係,並使用具有相同url的DELETE刪除該關係。
這是我的用戶控制器:
@RestController
@RequestMapping("/permisos-api")
public class UsuarioController {
@Autowired
UsuarioRepository userRepository;
@GetMapping("/usuarios")
public List<Usuario> getAllUsuarios() {
return userRepository.findAll();
}
@GetMapping("/usuarios/{id}")
public ResponseEntity<Usuario> getUsuarioById(@PathVariable(value = "id")
Integer userId) {
Usuario user = userRepository.findOne(userId);
if(user == null) {
return ResponseEntity.notFound().build();
}
return ResponseEntity.ok().body(user);
}
@PostMapping("/usuarios")
public Usuario createUsuario(@Valid @RequestBody Usuario user) {
return userRepository.save(user);
}
@PutMapping("/usuarios/{id}")
public ResponseEntity<Usuario> updateUsuario(@PathVariable(value = "id")
Integer userId, @Valid @RequestBody Usuario
userDetails) {
Usuario user = userRepository.findOne(userId);
if(user == null) {
return ResponseEntity.notFound().build();
}
user.setNombre(userDetails.getNombre());
user.setStatus(userDetails.getStatus());
Usuario updatedUser = userRepository.save(user);
return ResponseEntity.ok(updatedUser);
}
@DeleteMapping("/usuarios/{id}")
public ResponseEntity<Usuario> deleteUusario(@PathVariable(value = "id")
Integer userId) {
Usuario user = userRepository.findOne(userId);
if(user == null) {
return ResponseEntity.notFound().build();
}
userRepository.delete(user);
return ResponseEntity.ok().build();
}
@GetMapping("/usuarios/{id}/permisos")
public ResponseEntity<Collection<Permiso>>
getPermisosOfUsuario(@PathVariable(value = "id") Integer userId) {
Usuario user = userRepository.findOne(userId);
if(user == null) {
return ResponseEntity.notFound().build();
}
return ResponseEntity.ok().body(user.getPermisoCollection());
}
}
感謝。
你甚至知道JPA是什麼嗎?關係通過適當的實體映射進行自動處理 – Antoniossss
[JPA ManyToMany persist]的可能重複(https://stackoverflow.com/questions/31534871/jpa-manytomany-persist) – Antoniossss
恐怕您正在做大量冗餘工作。隨着JPA可以在@RepositoryRestResource註釋添加到您的JPA庫和Spring自動生成所有CRUD方法。 –