EJB

EntityManager#createNativeQueryで一部のデータを取り出すとき

EJBのEntityManagerでテーブルをselectしてそのテーブルのエンティティを返すのは普通にやることだが、group byしてキーだけ取り出したい、などのときは以下のようにObjectの配列のリストとして扱う。 val keys = em.createNativeQuery("select t1.key1, t1.…

ScalaのEJBをJavaから参照する

以前からscalaでEJBを書いていたが、ここへ来て問題発生。JavaとScalaの混在プロジェクトでJavaからScalaのクラスを参照したときにコンパイルエラーにはならないのに、eclipseのエディタ上ではエラーの表示がされてしまう。これを解決するにはJava同様、Scal…

scalaでEJB

リレーションの定義は以下 @ManyToOne(cascade=Array(CascadeType.REFRESH)) @JoinColumn(name="shohinCd", insertable=false, updatable=false) @Cache(usage=CacheConcurrencyStrategy.NONE) @BeanProperty var shohin:Shohin= _

EJB-QLのチューニング

EJB

EJBをDBから取り出すときにSQLに似たEJB-QLを使うわけですが、@NamedQuery(name="torihiki.findForReport", query="select torihiki from Torihiki torihiki " + "left outer join fetch torihiki.torihikiMeisais torihikiMeisai " + "where torihiki.nohin…

Entity BeanでCREATE INDEXする

EJB

アプリケーションのチューニングをして、DBにインデックスを張りたいとき、SQLを直に実行してしまうと移植時などに忘れてしまうことがあるので、Entity Bean内に書いておきたい。調べると、 @Table(indexes = {@Index(name="customer_idx", columnNames = {"…

jbossのtransaction timeoutの制御

jbossで大きなバッチ処理などするとtimeoutで落ちてしまうことがある。このようなとき、そのメソッドだけtimeout値を変更するには、以下のアノテーションをメソッドに付ける@TransactionTimeout(1500)参照URL: http://community.jboss.org/wiki/TransactionT…

caseクラスでパラメータにアノテーション 続き

前回caseクラスでパラメータにアノテーションを書いても効かなかったと書きましたが、正確にはjavaのアノテーションは効かないということでした。case class Shohin ( @BeanProperty pk:Stringこれは効くけれど、case class Shohin ( @Column columnDefiniti…

caseクラスでパラメータにアノテーション

EJBのエンティティビーンをscalaで書こうと、@Entity @Cache(usage=CacheConcurrencyStrategy.NONE) case class Foo(@Id k:Int, v:String)としてみたところ、以下のエラー。Reason: org.hibernate.AnnotationException: No identifier specified for entity:…

scala-2.8でEJB

scala-2.8が先週リリースされたので、eclipseプラグインもアップデートしてみました。既存のEJBが @GeneratedValue(strategy=GenerationType.AUTO)の行でannotation needs to be a constantというメッセージでエラーになりました。コマンドラインでscalacす…