QA@IT

Application.java 22行目でエラーが出る。

3901 PV

@ITの記事「Play frameworkのDB操作を楽にするEBeanの基礎知識 (2/3)」についての質問です。

Execution exception
[PersistenceException: Unique expecting 0 or 1 rows but got [2]]
In C:\play-2.2.3\firstProject\app\controllers\Application.java at line 22.
19
20 // parent1 の取得(条件を指定した検索)
21 Query query = finder.where("name='新宿太郎'");
22 Parent parent1 =query.findUnique();
23
24 // parent2 の取得(Idからの検索。Idは保存したときに振られたId)
25 Parent parent2 =finder.byId(new Long(2));
26

27 // 1番目の名前を更新します
DATABASEの中身の表示は、
新宿太郎
新宿太郎
代々木太郎
となっているので、22行目で、ユニークでは無く、同じ物なのでエラーなのかもしれませんね。
それが、解ってもどうすれば良いか解りません。

回答

nameでユニーク検索をしようとしているのは、DB内容が下記のような状態を想定しているのだと思います。

Parent [id=1, name=新宿太郎, createDate=Sun Apr 08 22:56:25 JST 2012, updateDate=Sun Apr 08 22:56:25 JST 2012]
Parent [id=2, name=代々木太郎, createDate=Sun Apr 08 22:56:25 JST 2012, updateDate=Sun Apr 08 22:56:25 JST 2012]
Parent [id=3, name=原宿太郎, createDate=Sun Apr 08 22:56:25 JST 2012, updateDate=Sun Apr 08 22:56:25 JST 2012]

エラーが出ているコードのちょっと前のサンプルコードで、このように登録を行っていますね。
ですので、データを一旦削除してから、再度3件を登録してみてください。

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。