前提
Serviceクラスのインターフェースでvoidクラスを設定したのですが、継承するとvoidにできないエラーが発生しています。
Serviceクラス以外で問題が起きているのか、それとも継承前の戻り値がそもそも間違っているのかわかっていない状態です。
わかる方教えていただけると助かります。
実現したいこと
RepositoryおよびServiceクラスが正常に作動する
発生している問題・エラーメッセージ
void メソッドは値を戻すことができません InventoryServiceImpl.java /InventoryManagement/src/main/java/com/example/demo/Service
該当のソースコード
Service
1public interface InventoryService { 2 3 void create(Inventory inventory); 4} 5 6@RequiredArgsConstructor 7public class InventoryServiceImpl implements InventoryService { 8 9 private final InventoryMapper inventoryMapper 10 11 @Override 12 public void create(Inventory inventory) { 13 return inventoryMapper.create(inventory); ←この箇所でエラーが発生している 14 } 15 16}
Repository
1public interface InventoryMapper { 2 3 List<Inventory> findByDate(Date sqlDate); 4 5 void create(Inventory inventory); 6 7} 8
Form
1public class InventoryForm { 2 3 @NotNull(message ="商品名を選択してください。") 4 private int productId; 5 6 @NotNull(message = "数値を入力してください。") 7 @PositiveOrZero(message = "正の数を入力してください。") 8 private BigDecimal quantity; 9 10 @NotNull(message = "日付を設定してください。") 11 @DateTimeFormat(pattern = "yyyy-MM-dd") 12 @PastOrPresent(message = "日付が未来に設定されています。") 13 private LocalDate reportDate; 14 15}
Entity
1public class Inventory { 2 3 private int id; 4 5 private int productsId; 6 7 private Product productsName; 8 9 private float quantity; 10 11 private Date reportDate; 12 13 private LocalDateTime updatedAt; 14} 15
Controller
1@PostMapping("/insert") 2 public String insert( 3 @Validated @ModelAttribute InventoryForm inventoryForm, 4 BindingResult result, 5 Model model, 6 RedirectAttributes redirectAttributes) { 7 8 Inventory inventory = makeInventory(inventoryForm); 9 10 if (result.hasErrors()) { 11 model.addAttribute("inventoryForm", inventoryForm); 12 model.addAttribute("title", "在庫数登録画面"); 13 14 return "inventory/form"; 15 } 16 17 inventoryService.create(inventory); 18 model.addAttribute("title", "在庫数登録画面"); 19 redirectAttributes.addFlashAttribute("complete", "登録完了しました。"); 20 return "redirect:/inventory/form"; 21 22 } 23 24 private Inventory makeInventory(InventoryForm inventoryForm) { 25 Inventory inventory = new Inventory(); 26 27 inventory.setProductsId(inventoryForm.getProductId()); 28 inventory.setQuantity(inventoryForm.getQuantity().floatValue()); 29 inventory.setReportDate(java.sql.Date.valueOf(inventoryForm.getReportDate())); 30 31 return inventory; 32 }
試したこと
返り値をObjectに変更してみましたが、以下のエラーが発生している状態です。
Mapper method 'com.example.demo.repository.InventoryMapper.create' has an unsupported return type: class java.lang.Object
補足情報(FW/ツールのバージョンなど)
java11, spring boot, mybatis, Mysql
回答2件
あなたの回答
tips
プレビュー