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

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

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

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

Q&A

解決済

1回答

9326閲覧

springbootの検索機能について

heavyuseman

総合スコア42

Spring

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

0グッド

0クリップ

投稿2016/08/27 03:03

編集2016/08/28 04:12

###前提・実現したいこと
springbootで会員検索画面を作成しています。
使用しているDBはMysqlです。
DB上のカラムはID,名前,メモです。
会員検索画面で名前とメモのテキストボックスに値を入力して、ボタンを押下したら
画面上に検索した情報が表示したいです。
名前とメモのテキストボックスに値を入力して、ボタンを押下したらエラーが発生しましたが、原因は何でしょうか?
ご回答のほど宜しくお願い致します

エラーメッセージ ModelAndView: reference to view with name 'first'; model is {title=Find Page, msg=サンプルです, value=, datalist=[com.tuyano.springboot.MyDataMongo@5d599aec, com.tuyano.springboot.MyDataMongo@435785a9, com.tuyano.springboot.MyDataMongo@1104fe83, com.tuyano.springboot.MyDataMongo@1665bf7c, com.tuyano.springboot.MyDataMongo@7b9d0875, com.tuyano.springboot.MyDataMongo@418b062, com.tuyano.springboot.MyDataMongo@325eb684, com.tuyano.springboot.MyDataMongo@97b71ec, com.tuyano.springboot.MyDataMongo@1a361e16, com.tuyano.springboot.MyDataMongo@5bec2692, com.tuyano.springboot.MyDataMongo@1cc151fd, com.tuyano.springboot.MyDataMongo@4e67a798, com.tuyano.springboot.MyDataMongo@640bd6ec, com.tuyano.springboot.MyDataMongo@483148d0, com.tuyano.springboot.MyDataMongo@3b996d29, com.tuyano.springboot.MyDataMongo@11f6000]} paramcom.tuyano.springboot.MyDataMongo@14118e06 2016-08-27 11:48:16.929 ERROR 819 --- [nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessApiUsageException: Parameter value [com.tuyano.springboot.MyDataMongo@14118e06] did not match expected type [java.lang.String (n/a)]; nested exception is java.lang.IllegalArgumentException: Parameter value [com.tuyano.springboot.MyDataMongo@14118e06] did not match expected type [java.lang.String (n/a)]] with root cause java.lang.IllegalArgumentException: Parameter value [com.tuyano.springboot.MyDataMongo@14118e06] did not match expected type [java.lang.String (n/a)] at org.hibernate.jpa.spi.BaseQueryImpl.validateBinding(BaseQueryImpl.java:897) ~[hibernate-entitymanager-5.0.9.Final.jar:5.0.9.Final] at org.hibernate.jpa.internal.QueryImpl.access$000(QueryImpl.java:61) ~[hibernate-entitymanager-5.0.9.Final.jar:5.0.9.Final] at org.hibernate.jpa.internal.QueryImpl$ParameterRegistrationImpl.bindValue(QueryImpl.java:235) ~[hibernate-entitymanager-5.0.9.Final.jar:5.0.9.Final] at org.hibernate.jpa.spi.BaseQueryImpl.setParameter(BaseQueryImpl.java:638) ~[hibernate-entitymanager-5.0.9.Final.jar:5.0.9.Final] at org.hibernate.jpa.spi.AbstractQueryImpl.setParameter(AbstractQueryImpl.java:163) ~[hibernate-entitymanager-5.0.9.Final.jar:5.0.9.Final]

java

1HeloController(修正後) 2package com.tuyano.springboot; 3 4import java.util.List; 5 6import org.springframework.beans.factory.annotation.Autowired; 7import org.springframework.stereotype.Controller; 8import org.springframework.transaction.annotation.Transactional; 9import org.springframework.web.bind.annotation.ModelAttribute; 10import org.springframework.web.bind.annotation.RequestMapping; 11import org.springframework.web.bind.annotation.RequestMethod; 12import org.springframework.web.bind.annotation.RequestParam; 13import org.springframework.web.servlet.ModelAndView; 14 15import com.tuyano.springboot.repositories.MyDataMongoRepository; 16 17@Controller 18public class HeloController { 19 20@Autowired 21MyDataMongoRepository repository; 22 23@RequestMapping(value="/",method=RequestMethod.GET) 24public ModelAndView index(@ModelAttribute("formModel")MyDataMongo mydatamongo,ModelAndView mav){ 25 mav.setViewName("index"); 26 mav.addObject("title","Find Page"); 27 mav.addObject("msg","サンプルです"); 28 List<MyDataMongo> list=repository.findAll(); 29 mav.addObject("datalist",list); 30 System.out.println(mav); 31 return mav; 32} 33@RequestMapping(value="/",method=RequestMethod.POST) 34 35public ModelAndView form( 36 @ModelAttribute("formModel")MyDataMongo mydatamongo,ModelAndView mav){ 37 repository.saveAndFlush(mydatamongo); 38 mav =new ModelAndView("redirect:/"); 39 System.out.println("mov"+mav); 40 return mav; 41} 42 43@RequestMapping(value="/first",method=RequestMethod.GET) 44public ModelAndView find(@ModelAttribute("formModel")MyDataMongo mydatamongo,ModelAndView mav){ 45 mav.setViewName("first"); 46 mav.addObject("title","Find Page"); 47 mav.addObject("msg","サンプルです"); 48 mav.addObject("value",""); 49 List<MyDataMongo> list=repository.findAll(); 50 mav.addObject("datalist",list); 51 System.out.println(mav); 52 return mav; 53} 54@RequestMapping(value="/first",method=RequestMethod.POST) 55public ModelAndView search(@RequestParam("name")String param,ModelAndView mav){ 56 mav.setViewName("first"); 57 58 if(param ==""){ 59 mav =new ModelAndView("redirect:/first"); 60 }else{ 61 System.out.println("param"+param); 62 mav.addObject("title","Find Result"); 63 mav.addObject("msg","["+param+"]の検索結果"); 64 mav.addObject("value",param); 65 List<MyDataMongo> list=repository.findByName(param); 66 System.out.println(list); 67 mav.addObject("dataList",list); 68 69 } 70 System.out.println(mav); 71return mav; 72} 73}

java

1MyDataMongo.java 2package com.tuyano.springboot; 3 4import java.util.Date; 5 6import javax.persistence.Column; 7import javax.persistence.Entity; 8import javax.persistence.GeneratedValue; 9import javax.persistence.GenerationType; 10import javax.persistence.Id; 11import javax.persistence.Table; 12@Entity 13@Table(name="Linefriend") 14public class MyDataMongo { 15@Id 16@GeneratedValue(strategy=GenerationType.AUTO) 17@Column 18private Long id; 19 20@Column 21private String name; 22@Column 23private String memo; 24//private Date date; 25public MyDataMongo(String name, String memo) { 26 super(); 27 this.name=name; 28 this.memo=memo; 29} 30 31//public void setId(Long id){ 32 33// this.id=id; 34 35//} 36 37public Long getId(){ 38 39 return id; 40 41} 42 43 44public String getName(){ 45 46 return name; 47 48} 49 50 51 52 53 54public String getMemo(){ 55 56 return memo; 57 58} 59 60 61 62 63 64 65} 66 67

HTML

1<!DOCTYPE html> 2<html xmlns:th="http://www.thymeleaf.org"> 3<head> 4<title>top page</title> 5<meta http-equiv="Content-Type" 6content="text/html" charset="UTF-8"/> 7</head> 8<body> 9 10 <h1 th:text="${title}">find Page</h1> 11 <p th:text="${msg}"></p> 12 <table> 13 <form method="post" action="/first"> 14 <tr><td>名前</td> 15 <td><input type="text" name="first" size="20" th:value="${value}"/></td></tr> 16 <tr><td>パスワード</td> 17 <td><input type="text" name="first" size="20" th:value="${value}"/></td></tr> 18 <tr><td></td><td><input type="submit"/></td></tr> 19 </form> 20 </table> 21 <hr/> 22 <table> 23 <tr><th>名前</th><th>メモ</th><th>日時</th></tr> 24 <tr th:each="obj :${datalist}"> 25 <td th:text="${obj.name}"></td> 26 <td th:text="${obj.memo}"></td> 27 28 </tr> 29 </table> 30 31 32</body> 33</html>

java

1MyDataMongoRepository.java(修正後) 2package com.tuyano.springboot.repositories; 3 4import java.util.List; 5 6import org.springframework.data.jpa.repository.JpaRepository; 7import org.springframework.stereotype.Repository; 8 9import com.tuyano.springboot.MyDataMongo; 10 11 12@Repository 13public interface MyDataMongoRepository extends JpaRepository<MyDataMongo,String>{ 14 15public List<MyDataMongo> findByName(String s); 16 17 18} 19 20 21

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

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

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

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

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

argius

2016/08/27 14:29

私もあまり自信が無いのですが、findByName(MyDataMongo mydatamongo)という書き方は何を参考にしたのですか? エラーはこの方法が使えないことを示唆しているように思います。
heavyuseman

2016/08/28 04:36

ご回答して頂きありがとうございます。書き方は主に所有しておりますspringbootの書籍を参考しております。 ・HeloControlle.javaMyDataMongoRepository.java を修正し、正常に検索できるようになりました。 修正した箇所の修正はコードに記載しております。 お忙しい中ご回答して頂きありがとうございました
argius

2016/08/28 05:21

Stringに変えたのですね。元の方法は本当に使えないのかどうか自信がありませんので、回答しないでおきます。 質問が付かずに解決された場合は、お手数ですが、質問者様ご自身で質問のクローズをお願いします。 質問の下部にある「自己解決方法を記入する」で解決した方法を書いて投稿すれば、クローズできます。
heavyuseman

2016/08/28 05:23

了解しました。ではこちらでクローズしておきますね
guest

回答1

0

自己解決

MyDataMongoRepository.java をString型に変更して対応いたしました

投稿2016/08/28 05:24

heavyuseman

総合スコア42

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問