私のSpring Boot Webアプリケーションには、アップロードされたファイルに関する情報を記録するJPAエンティティMedium
があります。Spring Data Rest JPAエンティティをカスタムコントローラに保存してHAL表現を返します。
私は一般的な操作を処理するための基本的な春データレストリポジトリを持っている:
@RepositoryRestResource(path = "/media")
public interface MediumRepository extends CrudRepository<Medium, Long> {
}
はしかし、私はその後Medium
レコードを作成し、それを返す、HTTPマルチパートアップロードを使用してファイルをアップロードするためにクライアントが必要です応答。応答の構造は、repository.save()
と同じでなければなりません。私が理解できないことは、HATEOASメタデータを追加する方法です。明らかに、返されたばかりの場合、
return mediumRepository.save(medium);
エンティティの基本的なJSON表現であるHATEOASは返されません。私はおそらくPersistentEntityResourceAssembler
を使用すべきであると私はalready learned。
だから、私の現在のコントローラのコードは次のとおりです。
@RestController
@RequestMapping("/upload")
public class MediaEndpoint {
@Autowired
private MediumRepository mediumRepository;
@RequestMapping(method = POST)
public PersistentEntityResource uploadMedium(
@RequestPart MultipartFile data,
PersistentEntityResourceAssembler persistentEntityResourceAssembler) {
Medium medium = new Medium();
// setup of the medium instance
Medium savedMedium = mediumRepository.save(medium);
return persistentEntityResourceAssembler.toResource(savedMedium);
}
}
しかし、私はpersistentEntityResourceAssembler
は法に注入得ることができない - 私はどのように私はこれを実装することができます
Failed to instantiate [org.springframework.data.rest.webmvc.PersistentEntityResourceAssembler]: No default constructor found; nested exception is java.lang.NoSuchMethodException: org.springframework.data.rest.webmvc.PersistentEntityResourceAssembler.<init>()
を取得していますか?
これは私に正しい方向に感謝しました。私はいくつかの調整を加えなければならなかった、自分の答えを見て –