[Seasar-user:17088] Re: [dbflute] 2 WAY SQLのリテラルが、そのまま SQLに出てしまう
kubo
[E-MAIL ADDRESS DELETED]
2009年 3月 20日 (金) 19:28:38 JST
久保です。
志村さん、こんばんは
> user_role.loginname = /*pmb.loginname*/ 'mike'
> AND transaction_screen.screen = /*pmb.screen*/ '/example/vdr'
バインド変数コメントとテスト値の間に空白「 」が
入っているように見えます。こちらの空白を削って
もう一度試して頂けないでしょうか?
「/*pmb.loginname*/ 'mike'」
↓
「/*pmb.loginname*/'mike'」
「*pmb.screen*/ '/example/vdr'」
↓
「*pmb.screen*/'/example/vdr'」
ちなみに基点テーブルのとあるカラムの
Max値を取得するのであれば、
transactionScreenBhv.scalarSelect(new ScalarQuery<TransactionScreenCB>{
public void query(TransactionScreenCB cb) {
cb.specify().columnLevel();
cb.query()... // その他絞り込み条件
}
});
で、実現可能です。
dbflute-basic-exampleのBehaviorMiddleTestの
test_scalarSelect_max_Tx()にExample実装あります。
2009/3/20 Masanobu Shimura <[E-MAIL ADDRESS DELETED]>:
> 久保さん
> はまってしまったので、教えて下さい。
> なお SQL文を下記に修正すれば通りますので、急いではいませんが。
> また /*IF にしても同様で、変化ありません。
> dbflute runtime 0.9.3、S2 2.4.33 で、 dbflute-basic-exampleは、ERRORなく通ります。
> 志村
>
> 通る SQL文
> WHERE
> user_role.loginname = /*pmb.loginname*/
> AND transaction_screen.screen = /*pmb.screen*/
>
> ERROR 外だし SQL文
> -- !SelectLevelPmb!
> -- !!String loginname!!
> -- !!String screen!!
> SELECT
> MAX(LEVEL)
> FROM
> transaction_screen
> JOIN tran_role
> ON transaction_screen.transaction = tran_role.transaction
> JOIN user_role
> ON user_role.role = tran_role.role
> WHERE
> user_role.loginname = /*pmb.loginname*/ 'mike'
> AND transaction_screen.screen = /*pmb.screen*/ '/example/vdr'
> 実行LOG
> DEBUG 2009-03-20 17:39:44,519 [main] 論理的なコネクションを取得しました。tx=[FormatId=4360,
> GlobalId=1237538384068/0, BranchId=]
> DEBUG 2009-03-20 17:39:44,529 [main]
> -- !SelectLevelPmb!
> -- !!String loginname!!
> -- !!String screen!!
> SELECT
> MAX(LEVEL)
> FROM
> transaction_screen
> JOIN tran_role
> ON transaction_screen.transaction = tran_role.transaction
> JOIN user_role
> ON user_role.role = tran_role.role
> WHERE
> user_role.loginname = 'mike' 'mike'
> AND transaction_screen.screen = '/example/menu' '/example/vdr'
> DEBUG 2009-03-20 17:39:44,627 [main] 論理的なコネクションを閉じました。tx=[FormatId=4360,
> GlobalId=1237538384068/0, BranchId=]
> DEBUG 2009-03-20 17:39:44,627 [main] END
> org.seasar.ef.example.agile.logic.TransactionLogic#GetLevel(mike,
> /example/menu) Throwable:org.seasar.dbflute.exception.SQLFailureException:
> Look! Read the message below.
> /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
> The SQL failed to execute!
> [Advice]
> Please confirm the SQLException message.
> [SQLState]
> 42601
> [ErrorCode]
> 0
> [SQLException]
> org.seasar.framework.exception.SSQLException
> [ESSR0072]SQLで例外(SQL=[-- !SelectLevelPmb!
> -- !!String loginname!!
> -- !!String screen!!
> SELECT
> MAX(LEVEL)
> FROM
> transaction_screen
> JOIN tran_role
> ON transaction_screen.transaction = tran_role.transaction
> JOIN user_role
> ON user_role.role = tran_role.role
> WHERE
> user_role.loginname = ? 'mike'
> AND transaction_screen.screen = ? '/example/vdr'], Message=[0],
> ErrorCode=42601, SQLState={3})が発生しました
> [NextException]
> org.postgresql.util.PSQLException
> ERROR: syntax error at or near "'mike'"
> [Behavior]
> TranRoleBhv.outsideSql().selectList()
> [OutsideSql]
> org/seasar/ef/example/agile/dbflute/exbhv/TranRoleBhv_selectLevel.sql
> [ParameterBean]
> org.seasar.ef.example.agile.dbflute.exbhv.pmbean.SelectLevelPmb
> {mike,/example/menu}
> [Statement]
> org.seasar.extension.jdbc.impl.PreparedStatementWrapper
> [Display SQL]
> -- !SelectLevelPmb!
> -- !!String loginname!!
> -- !!String screen!!
> SELECT
> MAX(LEVEL)
> FROM
> transaction_screen
> JOIN tran_role
> ON transaction_screen.transaction = tran_role.transaction
> JOIN user_role
> ON user_role.role = tran_role.role
> WHERE
> user_role.loginname = 'mike' 'mike'
> AND transaction_screen.screen = '/example/menu' '/example/vdr'
> * * * * * * * * * */
> DEBUG 2009-03-20 17:39:44,640 [main] トランザクションをロールバックしました。tx=[FormatId=4360,
> GlobalId=1237538384068/0, BranchId=]
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
>
Seasar-user メーリングリストの案内