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

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

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

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

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

MyBatis

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

Spring Boot

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

Q&A

解決済

1回答

713閲覧

[Mybatis] 値の取得がわからない。エラー:org.apache.ibatis.reflection.ReflectionException

pomupomupurin

総合スコア1

Java

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

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

MyBatis

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

Spring Boot

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

0グッド

0クリップ

投稿2023/09/08 08:02

編集2023/09/08 08:14

MyBatis3で起きたエラーの対処法について質問させていただきます。

商品を登録したいのですが、登録しようとするとエラーになります。

エラー内容

Caused by: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'comics_id' in 'class com.example.comics.domain.model.Comics' at org.apache.ibatis.reflection.Reflector.getGetInvoker(Reflector.java:387)

値がないとのことでエラーが起きていると思われます。
したがって、値の取得方法についてご教授願います。

package com.example.comics.app.comics; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import com.example.comics.domain.model.Comics; @Mapper public interface ComicsMapper { @Mapping(target = "createdAt", ignore = true) @Mapping(target = "finished", ignore = true) Comics map(ComicsForm form); }
package com.example.comics.domain.model; import java.io.Serializable; import java.util.Date; public class Comics implements Serializable { private static final long serialVersionUID = 1L; private String comicsId; private String comicsTitle; private boolean finished; private Date createdAt; public String getComicsId() { return comicsId; } public void setComicsId(String comicsId) { this.comicsId = comicsId; } public String getComicsTitle() { return comicsTitle; } public void setComicsTitle(String comicsTitle) { this.comicsTitle = comicsTitle; } public boolean isFinished() { return finished; } public void setFinished(boolean finished) { this.finished = finished; } public Date getCreatedAt() { return createdAt; } public void setCreatedAt(Date createdAt) { this.createdAt = createdAt; } }
package com.example.comics.app.comics; import java.util.Collection; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import org.terasoluna.gfw.common.exception.BusinessException; import org.terasoluna.gfw.common.message.ResultMessage; import org.terasoluna.gfw.common.message.ResultMessages; import com.example.comics.domain.model.Comics; import com.example.comics.domain.service.comics.ComicsService; import jakarta.inject.Inject; import jakarta.validation.Valid; @Controller @RequestMapping("comics") public class ComicsController { @Inject ComicsService comicsService; @Inject ComicsMapper beanMapper; @ModelAttribute public ComicsForm setUpForm() { ComicsForm form = new ComicsForm(); return form; } @GetMapping("list") public String list(Model model) { Collection<Comics> comicslist = comicsService.findAll(); model.addAttribute("comicslist", comicslist); return "comics/list"; } @PostMapping("create") public String create(@Valid ComicsForm comicsForm, BindingResult bindingResult, Model model, RedirectAttributes attributes) { if (bindingResult.hasErrors()) { return list(model); } Comics comics = beanMapper.map(comicsForm); try { comicsService.create(comics); } catch (BusinessException e) { model.addAttribute(e.getResultMessages()); return list(model); } attributes.addFlashAttribute(ResultMessages.success().add(ResultMessage.fromText("Created successfully!"))); return "redirect:/comics/list"; } }
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- (1) --> <mapper namespace="com.example.comics.domain.repository.comics.ComicsRepository"> <!-- (2) --> <resultMap id="comicsResultMap" type="Comics"> <id property="Id" column="comics_id" /> <result property="comicsTitle" column="comics_title" /> <result property="finished" column="finished" /> <result property="createdAt" column="created_at" /> </resultMap> <!-- (3) --> <select id="findById" parameterType="String" resultMap="comicsResultMap"> <![CDATA[ SELECT comics_id, comics_title, finished, created_at FROM comics WHERE comics_id = #{comicsId} ]]> </select> <!-- (4) --> <select id="findAll" resultMap="comicsResultMap"> <![CDATA[ SELECT comics_id, comics_title, finished, created_at FROM comics ]]> </select> <!-- (5) --> <insert id="create" parameterType="Comics"> <![CDATA[ INSERT INTO comics ( comics_id, comics_title, finished, created_at ) VALUES ( #{comicsId}, #{comicsTitle}, #{finished}, #{createdAt} ) ]]> </insert> <!-- (6) --> <update id="update" parameterType="Comics"> <![CDATA[ UPDATE comics SET comics_title = #{comicsTitle}, finished = #{finished}, created_at = #{createdAt} WHERE comics_id = #{comicsId} ]]> </update> <!-- (7) --> <delete id="delete" parameterType="Comics"> <![CDATA[ DELETE FROM comics WHERE comics_id = #{comicsId} ]]> </delete> <!-- (8) --> <select id="countByFinished" parameterType="Boolean" resultType="Long"> <![CDATA[ SELECT COUNT(*) FROM comics WHERE finished = #{finished} ]]> </select> </mapper>

初学者のため至らない点ばかりで申し訳ありません。
ご回答よろしくお願いします。

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

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

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

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

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

jimbe

2023/09/08 09:05 編集

>値がないとのことでエラーが起きていると思われます >There is no getter for property named 'comics_id' in 'class com.example.comics.domain.model.Comics' Comics クラスに comics_id のゲッター(getComicsIdメソッド)が無いと言われています。
guest

回答1

0

自己解決

マッパーファイルのid propertyの値が間違っていたようでした。解決いたしました。

投稿2023/09/11 01:41

pomupomupurin

総合スコア1

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

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

jimbe

2023/09/11 18:44

間違っていた『よう』とはどういうことでしょうか。 修正したコードを回答に載せてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問