Spring+Hibernate統合についてno transaction is in progress
1905 ワード
構成の問題だけであれば、ネット上で構成に関するチュートリアルを見つけることができます.私が言いたいのは、あなたの構成に問題がないときですが、この異常な処理がずっと発生しています.以下は私が異常なコードを出しています(私の構成は問題ありません.ネット上の多くのチュートリアルと同じです).
もしあなたが私の上の使い方と同じなら、私たちは明らかな間違いを犯したと言いたいです.HibernateTemplateを自動的にアセンブリした以上、なぜsessionのsave()メソッドを一周するのでしょうか.コードを次のような使い方に変更すれば大丈夫で、データも正常に保存できます.
上の操作セッションをすべてHibernateTemplateを操作すればいいです.具体的な原理は,私もはっきりしていない.springが配置したトランザクションドメインはsessionのレベルに達していないと思います.具体的な原理は後で深く研究します.私はもう2日も遅れているので、ここに書いて、皆さんのために貴重な時間を節約したいと思っています.
@Repository("accountDaoImpl")
public class AccountDaoImpl implements AccountDao{
@Autowired
private HibernateTemplate hibernateTemplate;
@Override
public String register(Restaurant r, Store s, StoreInfo si) {
// TODO Auto-generated method stub
Session session = hibernateTemplate.getSessionFactory().openSession();
session.save(r);
session.save(s);
session.save(si);
System.out.println(s.getId());
session.flush();
session.close();
return String.valueOf(s.getId());
}
}
もしあなたが私の上の使い方と同じなら、私たちは明らかな間違いを犯したと言いたいです.HibernateTemplateを自動的にアセンブリした以上、なぜsessionのsave()メソッドを一周するのでしょうか.コードを次のような使い方に変更すれば大丈夫で、データも正常に保存できます.
hibernateTemplate.save(r);
hibernateTemplate.save(s);
hibernateTemplate.save(si);
上の操作セッションをすべてHibernateTemplateを操作すればいいです.具体的な原理は,私もはっきりしていない.springが配置したトランザクションドメインはsessionのレベルに達していないと思います.具体的な原理は後で深く研究します.私はもう2日も遅れているので、ここに書いて、皆さんのために貴重な時間を節約したいと思っています.