質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

MyBatis

MyBatisはJavaや.NET Frameworkでなどで使用できる、SQL文や、ストアドプロシージャをオブジェクトと紐付けるO/Rマッピングフレームワークです。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

解決済

2回答

851閲覧

voidのクラスを継承しているのに返り値をvoidにできないエラー Springboot

massan728

総合スコア35

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

MyBatis

MyBatisはJavaや.NET Frameworkでなどで使用できる、SQL文や、ストアドプロシージャをオブジェクトと紐付けるO/Rマッピングフレームワークです。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

1クリップ

投稿2022/08/06 18:46

前提

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoshi-takanori

2022/08/06 22:37 編集

return キーワードが不要では。 追記: 他の言語だと return の後ろに void を返す関数呼び出しなどの式を書ける場合もありますが、Java だとエラーになっちゃいますね。
m.ts10806

2022/08/07 03:02 編集

returnしてどうしたいのでしょう。 Springの問題ではなくJavaの基礎の問題に見えます
jimbe

2022/08/07 03:33

>voidクラス それは何でしょう。
massan728

2022/08/07 03:58

たしかによくよく見返してみれば、return必要なかったです...。 returnは必要なんだと勘違いしてました。
guest

回答2

0

値を返したいならvoidメソッドにしてはダメでしょう。
返す値の型にしてください。

投稿2022/08/07 01:57

swordone

総合スコア20651

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

そのreturnを削除すればいいです。

投稿2022/08/06 22:29

y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

massan728

2022/08/07 03:59

returnを削除するとうまくいきました。 よくよく見返してみると、return必要なかったですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問