落穂拾い(0603)

MySQLに接続できない →\sというコマンドで、自分がrootではなくてOwnerという権限で普段入っていたことに気づいた

Connection id: 12 Current database: test Current user: Owner@localhost SSL: Not in use Using delimiter: ; Server: MariaDB Server version: 10.1.21-MariaDB mariadb.org binary distribution

Threads: 1 Questions: 68 Slow queries: 0 Opens: 25 Flush tables: 1 Open tab

les: 19 Queries per second avg: 0.006

Owner

insert into goods(id, name, mail, memo) values(1, 'Satou', 'xxx', 'memo'); insert into goods(id, name, mail, memo) values(2, 'Salt', 'yyy', 'memo2'); create table goods(id int, name varchar(20), mail varchar(20), memo varchar(20));

@Entityがなかったからエラー出てた


org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'requestMappingHandlerMapping' defined in class path resource →requestMappingHandlerMappingでエラー Invocation of init method failed; =最初の関数呼び出しの時点でとまってるよ nested exception is java.lang.IllegalStateException: →不正または不適切なときにメソッドが呼び出された Ambiguous mapping. Cannot map 'heloController' method

→両義に取れる、多義の、あいまいな、不明瞭な 曖昧模糊

⇒@RequestMapping(value = "/", method = RequestMethod.GET)のように パスとGET/POSTが一致する同名同REST形式の関数をControllerに定義していたからだった。

「Spring MVC では、基本的に @RequestMapping アノテーションで指定した URL パターンに合致する Controller のメソッドを実行し、 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping クラスがその処理を担っています。」

http://fits.hatenablog.com/entry/2015/05/07/202907 ★NestedException

→catchした例外に対してメッセージを付加してrethrowする場合 たぶん色々エラーとして言いたいけどthorow文言は一括でまとめたいとき


There was an unexpected error (type=Internal Server Error, status=500). Exception evaluating SpringEL expression: → 評価する SpringEL はたぶんTemplate Viewの描画に関するやつThymeleaf

"name" (template: "index" - line 22, col 38)

⇒ 綴りミス&仕組みの理解不足 //cf →Conでの mav.addObject("datalist",list); return mav;

// OK →当該formを一括り(obj)にして扱う。conでは@ModelAttribute("formModel") MyData mydata, として取得。 入力値がない場合は、各プロパティにnullが入ったObj != nullそのもの として扱われる。 @ModelAttribute("formModel") MyData mydataでの formModelという画面側て定義したObj名をformmodelとしており、Con側で「それは入力値を入れるObj」ってことがわかってなかった。 →Fuelでいうundifined view object(variable) みたいなアレ。

フォームに値入れて送信したら

error performing isolated work; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: error performing isolated work

HibernateJPAの製品)でのInsertが問題

https://stackoverflow.com/questions/22472292/how-to-insert-new-items-with-hibernate //ほぼこれ

@GeneratedValueを使って主キーを生成する方法は4つあって、 ・GenerationType.IDENTITY ・GenerationType.SEQUENCE ・GenerationType.TABLE ・GenerationType.AUTO stack overflowではAUTOではなくてIDENTITYを使えと →今度は'id’が払い出されていない(formにはidを入力する欄を作っていないので、INSERT VALUESするときに引数が足りないって言われてる) →最初から要テーブルに主キー&自動払い出しを設定しておくこと!!

CREATE TABLE goods ( id int(11) AUTO_INCREMENT NOT NULL PRIMARY KEY, //一種の慣用句として捉える name varchar(20) DEFAULT NULL, mail varchar(20) DEFAULT NULL, memo varchar(20) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1

→テーブル作り直したらできた!!!! MariaDB [test]> SELECT * FROM goods; +----+--------+---------+-------------+ | id | name | mail | memo | +----+--------+---------+-------------+ | 1 | sss | ss | | | 2 | ss | ss | ssss | | 3 | sssss | sssssss | sssssssssss | | 4 | ?????? | ? | | | 5 | ??? | ??? | ??? | +----+--------+---------+-------------+ 5 rows in set (0.03 sec)


Cannot cast from int to Long

//at Optional list = repository.findById((long)id);

⇒Long型 != long型 int id の場合 (long)id //OK (Long)id //NG https://stackoverflow.com/questions/1302605/how-do-i-convert-from-int-to-long-in-java