@ManyToOneを使って、そして時間を延ばして、問題をロードして、まとめを解決します.
2044 ワード
HIBERNATEのコメントを使って@ManyToOne(fetch=FetchType.lazy)を出した時、エラーが発生しました.
IDだけ取って、もう一度データベースから必要なものを取ります.
二.Fetch Type.lazyをEAGERに変更する
三.配置xml(試したことがない)
五.MVCに配置すると、個人的にはこの方法がいいと思います.
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:167)
at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:215)
at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:190)
at com.evolution.warlock.entity.Department_$$_javassist_1.getName(Department_$$_javassist_1.java)
at org.apache.shiro.authc.pam.ModularRealmAuthenticator.doSingleRealmAuthentication(ModularRealmAuthenticator.java:180)
at org.apache.shiro.authc.pam.ModularRealmAuthenticator.doAuthenticate(ModularRealmAuthenticator.java:267)
at org.apache.shiro.authc.AbstractAuthenticator.authenticate(AbstractAuthenticator.java:198)
答えを探しました.
fetch=FetchType.LAZY ,Hibernate get , load , load(id), Hibernate ( ), id (getter,setter ), id ( load ), session , id sql , session load() id , Hibernate session sql , session , 。
確かに上記の通りです.LAZYはID以外のすべてのアクセスを遮断していますので、解決方法はたくさんあります.IDだけ取って、もう一度データベースから必要なものを取ります.
二.Fetch Type.lazyをEAGERに変更する
三.配置xml(試したことがない)
<filter>
<filter-name>openSessionInView</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>openSessionInView</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
四.service層で、ハイビスカス.initialize()を使って、あなたが必要とする対象を新たに永続化します.五.MVCに配置すると、個人的にはこの方法がいいと思います.