SessionFactory sessionfactory = config.buildSessionFactory(); session = sessionfactory.openSession(); List list = session.find("from UserId as userid where userid.userId like 'Masatomi%'"); ↑ 結果(UserIdクラス)の格納されたListが返ってくる
HQLの文法などはいろんなサイトで説明されているので割愛。上の意味だけ。
from UserId[1] as userid[2] where userid[2].userId[3] like 'Masatomi%' ↑ 意味は、[1]のクラスを検索します。条件は[3]のフィールドが'Masatomi%'であるようなレコード ↑ [2]はエイリアスなんでなんでもよいでしょう
SessionFactory sessionfactory = config.buildSessionFactory(); session = sessionfactory.openSession(); UserId aUser=(UserId)session.load(UserId.class,"Masatomi"); <- 第二引数がUniqueKeyの値
SessionFactory sessionfactory = config.buildSessionFactory(); session = sessionfactory.openSession(); UserId aUser=(UserId)session.load(UserId.class,"Masatomi"); userid.setGroupId("GROUP01"); session.flush(); session.connection().commit(); //コレしないと、行ロックしちゃうっぽい
SessionFactory sessionfactory = config.buildSessionFactory(); session = sessionfactory.openSession(); UserId userid = new UserId("HOGEHOGE"); userid.setGroupId("1111"); //その他必要なカラムをセット session.save(userid); session.flush(); session.connection().commit();
SessionFactory sessionfactory = config.buildSessionFactory(); session = sessionfactory.openSession(); UserId userid=(UserId) session.load(UserId.class,"HOGEHOGE"); session.delete(userid); session.flush(); session.connection().commit();
hibernate.cfg.xmlはどうもひとつのデータベース設定しか書けないみたい(たぶん)。 でも場合によっては一つのデータベースだけではなく、複数のデータベースに接続することがあります。そのときに、複数の設定ファイルを切り替える方法がようやく分かりました。ちなみにTorqueで試行錯誤した経緯はTorque/複数のDBで同時に利用するをご参照。
Configuration config = new Configuration(); // config = config.configure(); // <-通常の設定の読み込み config = config.configure(new File( getServlet().getServletContext().getRealPath( "/WEB-INF/lib/hibernate.cfg.hoge.xml")));
このようにすることで、ランタイムに設定ファイルを指定することが出来るようです。。
JavaBeans?(ここではMember)にプロパティを追加してマッピングファイル(Member.hbm.xml)に
<many-to-one name ="workgroup" column="GROUPNO" class="nu.mine.kino.binding.ait.hibernate.Workgroup" cascade="all" outer-join="auto" update="false" insert="false" />
を追加すればよいようだ。追加しない場合はMember#getWorkgroup()の返り値がnullになるみたい。
JavaBeans?(ここではWorkGroup?)にプロパティを追加してマッピングファイル(WorkGroup?.hbm.xml)に
<set name="memberList" > <key ><column name="groupno" /></key> <one-to-many class="nu.mine.kino.binding.ait.hibernate.Member" /> </set>
を追加すればよいようだ。追加しない場合はWorkgroup#getMemberList?()の返り値がnullになるみたい。
クラス設計で考えるとWorkGroup? -> Member はあってもその逆はあまりないかなぁ。ようするに
aWorkGroup.getMembers()
はあっても
aMember.getWorkGroup()
はないことが多いように思うけど。。。
<mapping resource="nu/mine/kino/MtAuthor.hbm.xml" />などと指定する
たとえば
<id name="id" type="java.lang.Integer" column="id" > <meta attribute="field-description"> @hibernate.id generator-class="Increment" type="java.lang.Integer" column="id" </meta> <generator class="Increment" /> </id>
の
<meta attribute="field-description"> @hibernate.id generator-class="Increment" type="java.lang.Integer" column="id" </meta>
の部分は、コメントに使われるだけ、だと思う。
この記事は
現在のアクセス:1060