jqueryのajaxを利用してjava側でリクエストを受け取ろうとしておりますが下記のエラーが表示されます。
エラー内容
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of com.ransu.lastperiodweb.entity.UnitEntity$Board
: non-static inner classes like this can only by instantiated using default, no-argument constructor
at [Source: (PushbackInputStream); line: 1, column: 331] (through reference chain: com.ransu.lastperiodweb.entity.UnitEntity["boards"]->java.util.ArrayList[0])
以下に記述するソースのように受け取ったリクエストは
UnitEntity にマッピングしてもらい使用する予定なのですがこのマッピングがうまくいっていないようです
こちら試しにUnitEntity内にあるBoardオブジェクト部分を空の配列でリクエストを送ってあげると
mongodbへの登録まで無事完了できることが確認できております。
(mongoに登録されるBordは想定通り空の配列で、その他の値も送信したパラメーターに沿って登録されているのを確認)
なのでマッピング対象にオブジェクトが含まれる場合はマッピングする際に特別な記述が必要なのではないかと思っておりますが
そこが掴めずにいる状態になります。
呼び出し先のコントローラー
java
1@RequestMapping(value="/unitCreateAndUpdate", method=RequestMethod.POST) 2public JsonResult<UnitDTO> unitCreate(@RequestBody UnitEntity unit) { 3 unit = unitService.save(unit); 4 return new JsonResult<UnitDTO>(Constants.successCode, Constants.successMsg, new UnitDTO(unit)); 5}
リクエストパラメーターのマッピング先
java
1package com.ransu.lastperiodweb.entity; 2 3import java.util.List; 4 5import org.bson.types.ObjectId; 6import org.springframework.data.annotation.Id; 7import org.springframework.data.mongodb.core.mapping.Document; 8 9import lombok.Data; 10 11@Data 12@Document(collection = "units") 13public class UnitEntity { 14 15 @Id 16 private ObjectId id; 17 18 private String name; 19 20 private ObjectId sex; 21 22 private List<Board> boards; 23 24 @Data 25 public class Board { 26 27 private ObjectId boardId; 28 29 private int quantity; 30 } 31} 32
UnitService
java
1package com.ransu.lastperiodweb.service; 2 3import org.bson.types.ObjectId; 4 5import com.ransu.lastperiodweb.entity.UnitEntity; 6 7public interface UnitService { 8 9 UnitEntity getUnitById(ObjectId id); 10 11 UnitEntity save(UnitEntity units); 12 13 Boolean delete(UnitEntity units); 14}
UnitServiceImp
java
1package com.ransu.lastperiodweb.service.imp; 2 3import org.bson.types.ObjectId; 4import org.springframework.beans.factory.annotation.Autowired; 5import org.springframework.stereotype.Service; 6 7import com.ransu.lastperiodweb.entity.UnitEntity; 8import com.ransu.lastperiodweb.repository.UnitRepository; 9import com.ransu.lastperiodweb.service.UnitService; 10 11@Service 12public class UnitServiceImp implements UnitService { 13 14 @Autowired 15 private UnitRepository repository; 16 17 @Override 18 public UnitEntity getUnitById(ObjectId id) { 19 return repository.findById(id); 20 } 21 22 @Override 23 public UnitEntity save(UnitEntity units) { 24 return repository.save(units); 25 } 26 27 @Override 28 public Boolean delete(UnitEntity units) { 29 Boolean result = true; 30 try { 31 repository.delete(units); 32 } catch (Exception e) { 33 result = false; 34 } 35 return result; 36 } 37} 38
UnitRepository
java
1package com.ransu.lastperiodweb.repository; 2 3import org.bson.types.ObjectId; 4import org.springframework.data.mongodb.repository.MongoRepository; 5import org.springframework.stereotype.Repository; 6 7import com.ransu.lastperiodweb.entity.UnitEntity; 8 9@Repository 10public interface UnitRepository extends MongoRepository<UnitEntity, String> { 11 12 UnitEntity findById(ObjectId id); 13} 14
こちらぜひ、何かヒントでもわかる方がいましたらご助力をお願いいたします。
また、原因究明の際に何か足りない情報がございましたご指摘をお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。