2

Spring roo でプロジェクトを管理しています。休止状態を使用しています。このコントローラー メソッドを使用しようとすると、次の例外メッセージが表示されます: プロキシを初期化できませんでした - セッションがありません

org.hibernate.collection.internal.AbstractPersistentCollection.withTemporarySessionIfNeeded(AbstractPersistentCollection.java:186)
org.hibernate.collection.internal.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:545)
org.hibernate.collection.internal.AbstractPersistentCollection.read(AbstractPersistentCollection.java:124)
org.hibernate.collection.internal.PersistentSet.iterator(PersistentSet.java:180)
com.macrosystem.rentacar.service.DefaultJournalService.getReservationsProfitPerYear(DefaultJournalService.java:142)
com.macrosystem.rentacar.service.DefaultJournalService.getTotalLossAndProfitPerYear(DefaultJournalService.java:159)
com.macrosystem.rentacar.service.DefaultJournalService.getTotalLossAndProfit(DefaultJournalService.java:173)
com.macrosystem.rentacar.web.JournalController.lossAndPorfit(JournalController.java:44)

コントローラーメソッドは次のとおりです。

@RequestMapping("/lossandprofit.json")
public @ResponseBody List<Map<String, Number>> lossAndPorfit(){
  return journalService.getTotalLossAndProfit() ;
}

および例外の原因となったサービス メソッド

@Override
@Transactional
public BigDecimal getReservationsProfitPerYear(int year) {
    BigDecimal reservationsprofit = new BigDecimal(0) ;
    if(vehicle == null){
        log.warn("vehicule is null") ;
    }
    Set<Reservation> reservations = vehicle.getReservations() ;
    Iterator<Reservation> iterator = reservations.iterator() ;
    while(iterator.hasNext()){
        Reservation current = iterator.next() ;
        GregorianCalendar calendar = new GregorianCalendar() ;
        calendar.setTime(current.getStartDate()) ;
        if (calendar.get(Calendar.YEAR) == year){
            reservationsprofit = reservationsprofit.add(current.getAmount()) ;
        }
    }
    return reservationsprofit;
}

@Transactionnal でサービス メソッドに注釈を付けても例外が発生するのはなぜですか。applicationContext.xml ファイルを調べたところ、この行が見つかりました。

 <tx:annotation-driven mode="aspectj"
    transaction-manager="transactionManager" />

そのアノテーションの効果をキャンセルするのは mode="aspectj" の部分ですか?

4

1 に答える 1

1

同じエラーが発生し、このstackoverflow応答を読んだ後、web.xmlに次を追加して問題を解決しました:

<filter>
    <filter-name>jpaOpenEntityManagerInViewFilter</filter-name>
    <filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>jpaOpenEntityManagerInViewFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>
于 2013-10-30T21:46:26.650 に答える