<zscript>
import zkseasar.entity.Emp;
emps = jdbcManager.from(Emp.class)
.where("sal >= ?", 2000)
.orderBy("sal")
.getResultList();
</zscript>
上記のスクリプトを実行すると次のエラーメッセージを吐いてしまいます。
致命的: サーブレット zkLoader のServlet.service()が例外を投げました
org.zkoss.zk.ui.UiException: Sourced file: inline evaluation of: ``import zkseasar.entity.Emp;
emps = jdbcManager.from(Emp.class) . . . '' :
Error in method invocation: Method where( java.lang.String, int ) not found in class'org.seasar.extension.jdbc.query.AutoSelectImpl' :
検索条件を指定するときはSQL文字列ではなくSimpleWhereが使えます。
<zscript >
import zkseasar.entity.Emp;
import org.seasar.extension.jdbc.where.SimpleWhere;
emps = jdbcManager.from(Emp.class)
.where(new SimpleWhere()
.ge("sal", 2000)
)
.orderBy("sal")
.getResultList();
</zscript>
Rubyからは可変長引数を持つJavaメソッドでも呼び出せるか試してみました。
<zscript language="ruby">
import 'zkseasar.entity.Emp'
emps = $jdbcManager.from(Java::ZkseasarEntity::Emp:Class).
where("sal >= ?", 2000).
orderBy("sal").
getResultList()
emps.each{|emp| print emp.deptId, "\t", emp.empName, "\t", emp.sal, "\n"}
</zscript>
やはりダメですね。
致命的: サーブレット zkLoader のServlet.service()が例外を投げました
:1: no where with arguments matching [class java.lang.String, class java.lang.Long]
on object JavaUtilities (NameError)
...internal jruby stack elided...
0 件のコメント:
コメントを投稿