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

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

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

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

Play Framework 2

Play Framework 2はPlayのメジャーバージョンです。現代の web アプリケーション開発に必要なコンポーネント及び API を統合した生産性の高い Java と Scala の web アプリケーションフレームワークです。

Q&A

解決済

2回答

1146閲覧

Ebeanに於けるSQL文の発行方法

Nitta

総合スコア96

Java

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

Play Framework 2

Play Framework 2はPlayのメジャーバージョンです。現代の web アプリケーション開発に必要なコンポーネント及び API を統合した生産性の高い Java と Scala の web アプリケーションフレームワークです。

0グッド

0クリップ

投稿2019/03/22 05:34

編集2019/03/22 05:49

今、Ebeanを用いてSQL文を発行し、複数列を検索できるように
したいのですが、上手く流れません。
何が原因なのでしょうか?
SQL文やデータの型の指定など間違ってはないと思うのですが??

お分かりの方、居られましたらご教示下さい。
●app/controller/Appliction.java

public Result Search_R(){ DynamicForm input = Form.form(); input = input.bindFromRequest("name"); String my_w = input.data().get("name"); my_w = "%" + my_w + "%"; System.out.println(my_w); String my_S = "select * from sample_data where name like " + my_w + " or title like " + my_w + " or memo like " + my_w ; RawSql rawSql = RawSqlBuilder.parse(my_S).columnMapping("id", "order.id").columnMapping("name", "order.name").columnMapping("title", "order.title").columnMapping("memo", "order.memo").create(); Query<SampleData> datalist = Ebean.find(SampleData.class); datalist.setRawSql(rawSql); List<SampleData> datas = datalist.findList(); return ok(Search2.render(datas)); }

●エラー内容
(idカラムがマッピングで見つかりません。[[*]]]の一つを期待している)

2019-03-22T05:19:03.851047+00:00 app[web.1]: [error] application - 2019-03-22T05:19:03.851051+00:00 app[web.1]: 2019-03-22T05:19:03.851054+00:00 app[web.1]: ! @7ba07ci7p - Internal server error, for (POST) [/Search_R] -> 2019-03-22T05:19:03.851055+00:00 app[web.1]: 2019-03-22T05:19:03.851060+00:00 app[web.1]: play.api.UnexpectedException: Unexpected exception[IllegalArgumentException: DB Column [id] not found in mapping. Expecting one of [[*]]] 2019-03-22T05:19:03.851069+00:00 app[web.1]: at play.api.http.HttpErrorHandlerExceptions$.throwableToUsefulException(HttpErrorHandler.scala:289) 2019-03-22T05:19:03.851071+00:00 app[web.1]: at play.api.http.DefaultHttpErrorHandler.onServerError(HttpErrorHandler.scala:220) 2019-03-22T05:19:03.851073+00:00 app[web.1]: at play.api.GlobalSettings$class.onError(GlobalSettings.scala:160) 2019-03-22T05:19:03.851075+00:00 app[web.1]: at play.api.DefaultGlobal$.onError(GlobalSettings.scala:188) 2019-03-22T05:19:03.851076+00:00 app[web.1]: at play.api.http.GlobalSettingsHttpErrorHandler.onServerError(HttpErrorHandler.scala:100) 2019-03-22T05:19:03.851081+00:00 app[web.1]: at play.core.server.netty.PlayRequestHandler$$anonfun$2$$anonfun$apply$1.applyOrElse(PlayRequestHandler.scala:100) 2019-03-22T05:19:03.851083+00:00 app[web.1]: at play.core.server.netty.PlayRequestHandler$$anonfun$2$$anonfun$apply$1.applyOrElse(PlayRequestHandler.scala:99) 2019-03-22T05:19:03.851085+00:00 app[web.1]: at scala.concurrent.Future$$anonfun$recoverWith$1.apply(Future.scala:344) 2019-03-22T05:19:03.851086+00:00 app[web.1]: at scala.concurrent.Future$$anonfun$recoverWith$1.apply(Future.scala:343) 2019-03-22T05:19:03.851088+00:00 app[web.1]: at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32) 2019-03-22T05:19:03.851090+00:00 app[web.1]: Caused by: java.lang.IllegalArgumentException: DB Column [id] not found in mapping. Expecting one of [[*]] 2019-03-22T05:19:03.851091+00:00 app[web.1]: at com.avaje.ebean.RawSql$ColumnMapping.columnMapping(RawSql.java:505) 2019-03-22T05:19:03.851093+00:00 app[web.1]: at com.avaje.ebean.RawSqlBuilder.columnMapping(RawSqlBuilder.java:93) 2019-03-22T05:19:03.851094+00:00 app[web.1]: at controllers.Application.Search_R(Application.java:97) 2019-03-22T05:19:03.851096+00:00 app[web.1]: at router.Routes$$anonfun$routes$1$$anonfun$applyOrElse$10$$anonfun$apply$10.apply(Routes.scala:303) 2019-03-22T05:19:03.851098+00:00 app[web.1]: at router.Routes$$anonfun$routes$1$$anonfun$applyOrElse$10$$anonfun$apply$10.apply(Routes.scala:303) 2019-03-22T05:19:03.851099+00:00 app[web.1]: at play.core.routing.HandlerInvokerFactory$$anon$4.resultCall(HandlerInvoker.scala:157) 2019-03-22T05:19:03.851101+00:00 app[web.1]: at play.core.routing.HandlerInvokerFactory$$anon$4.resultCall(HandlerInvoker.scala:156) 2019-03-22T05:19:03.851103+00:00 app[web.1]: at play.core.routing.HandlerInvokerFactory$JavaActionInvokerFactory$$anon$14$$anon$3$$anon$1.invocation(HandlerInvoker.scala:136) 2019-03-22T05:19:03.851105+00:00 app[web.1]: at play.core.j.JavaAction$$anon$1.call(JavaAction.scala:73) 2019-03-22T05:19:03.851107+00:00 app[web.1]: at play.http.HttpRequestHandler$1.call(HttpRequestHandler.java:54)

環境
eclipse
windows10

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2019/03/22 08:09

とりあえず 前質問のDBに接続が解決できてから質問してください。
Nitta

2019/03/24 23:58

前質問のdbについては、解決できました。 ご確認下さい。
guest

回答2

0

ベストアンサー

ebeanでModelクラスにバインドする場合、[select *]を使用すると列名とプロパティがうまくバインドできないようです。

sql

1String my_S = "select * from sample_data …"

ではなく明示的にカラム名を指定すると解消すると思います。

sql

1String my_S = "select id, name, title from sample_data …"

投稿2019/03/25 06:45

taketoma

総合スコア374

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

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

Nitta

2019/03/25 07:38

返信ありがとうございます。 columnMappingを止め、id,name,title,memoのカラムを 明確にしてSQL文を発行したら上手くいきました。 今回はありがとうございました。 今後ともよろしくお願いいたします
guest

0

まず「columnMapping」の使い方ですが以下の通り第一引数がDB側のカラムです。

public RawSqlBuilder columnMapping(String dbColumn, String propertyName)

Parameters:
dbColumn - the DB column that we are mapping to a bean property
propertyName - the bean property that we are mapping the DB column to.
columnMapping

なので

java

1 columnMapping("id", "order.id")

は逆ではないかと
その上で「order.id」ですが、SQLでは「from sample_data」となっていてテーブル名が相違しています。
まずはこれらを正しく修正してみて下さい。

投稿2019/03/22 08:24

S_kawa

総合スコア156

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問