Database.query(~.class)を評価した時にエラーとなる時の修正箇所

otaguro 34views 更新:2015年9月10日

いつもとは違う場所で、データベースを操作しようとすると(Database.query(~.class)を呼び出す等)、
例外でApplicationFilterChain.interNalDoFilter(ServletRequest,ServletResponse) に飛んで、
DatabaseFilter.doFilter(ServletRequest, ServletResponse ,FilterChain) のDatabase.tearDown();が実行されてしまい、途中で処理が中断してしまうことがあります。
原因は、DatabaseのConnectionの設定が出来ていないことにあるそうです。


String userId = "user1";//login name String orgId = "org001";//"org001"等 String currentOrgId = Database.getDomainName(); if (currentOrgId == null) { DataContext dataContext; try { dataContext = Database.createDataContext(orgId); DataContext.bindThreadObjectContext(dataContext); } catch (Exception e) { e.printStackTrace(); } } TurbineUser turbineUser = Database .query(TurbineUser.class) .where(Operations.eq(TurbineUser.LOGIN_NAME_PROPERTY, userId)) .fetchSingle();

のように

      DataContext dataContext = Database.createDataContext(orgId);
      DataContext.bindThreadObjectContext(dataContext);

でConnectionを設定すると、例外は起きなくなります。

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません