2017-05-24 22 views
0
Exception: 

failed to lazily initialize a collection of role: com.cerner.budgetmanagement.model.Team.users, could not initialize proxy - no Session (through reference chain: com.cerner.budgetmanagement.model.Team["users"]) 

誰かがなぜこれが起こっているのか説明してください。私は春/冬眠環境でジャージーを使用することを学ぶ。この怠惰な初期化の私の理解は、セッションがスコープ外に出ていたためです。前もって感謝します。ロールのコレクションを遅延して初期化できませんでした:プロキシを初期化できませんでした - セッションなし

@SuppressWarnings({ "unchecked"}) 
    @GET 
    @Path("/name/{teamId}") 
    @Produces(MediaType.APPLICATION_JSON) 
    public Response getBudgetPlan(@PathParam("teamId") int teamId) { 

     teamDao = applicationContext.getBean("dao", Dao.class); 
     final Team team = teamDao.getModelById(Team.class, teamId); 
     Hibernate.initialize(team); 
     return Response.status(201).entity(team).build(); 
    } 

答えて

0

Team.usersに読み込むレイジーコレクションがあると思います。 これは、おそらくTransactionManagerの問題です。

HibernateSession用のTransactionManagerを作成します(まだ作成されていない場合)。@TransactionalでgetModelByIdメソッドに注釈を付けます。

0

問題は、遅延関係を初期化しようとしていることです。初期化は、Hibernateがデータを取得するためにSELECTステートメントを実行しようと試みることを意味します。

初期化中のコードの周囲にTransactionがないため、これは問題です。

詳細については、私の記事を参照してください。http://blog.arnoldgalovics.com/2017/02/27/lazyinitializationexception-demystified/

関連する問題