2014-10-29 2 views
0

최대 절전 모드 4.3.6으로 업데이트하면 저장 (엔티티)이 작동하지 않습니다. 업데이트 저장 전 모습은 다음과 같습니다.최대 절전 모드 4.3.6 저장 (엔티티) 오라클

public void save(Object entity) { 
    getHibernateTemplate().save(entity); 
} 

괜찮습니다. 이제 :

public void save(Object entity) { 
    getCurrentSession().save(entity); 
} 

엔티티를 저장하지 않습니다. 최대 절전 모드 엔티티와 맵은 동일합니다. 아무것도 변경되지 않았습니다. 문제는 엔터티를 저장하려고 할 때 DB (Oracle)에 저장 한 엔터티를 가져와야하는 ibatis를 사용하여 저장 프로 시저를 호출하는 것입니다. DB에 데이터가 없으므로 프로 시저가 중단됩니다.

내 질문 : hibernate-core 3.5.6에서이 저장이 hibernate-core 3.5.6 (이전 버전)처럼 작동하지 않는다는 점이 무엇입니까? 저장 호출을 제외하고 코드에 변경이 없습니다. 라이브러리 만.

내가 디버그 모드에 저장 실행하면 :

2014-10-29 11:35:31,820 Thread-8 SessionFactoryImpl$SessionBuilderImpl- Opening Hibernate Session. tenant=null, owner=null 
2014-10-29 11:35:31,823 Thread-8 SessionImpl- Setting flush mode to: MANUAL 
2014-10-29 11:35:31,862 Thread-8 DefaultSaveOrUpdateEventListener- Saving transient instance 
2014-10-29 11:35:31,865 Thread-8 AbstractSaveEventListener- Generated identifier: 10107, using strategy: org.hibernate.id.Assigned 
2014-10-29 11:35:31,868 Thread-8 AbstractSaveEventListener- Saving pl.com.uhc.db.hibernates.dto.ster.Message#10107 
2014-10-29 11:35:31,871 Thread-8 ActionQueue- Adding an EntityInsertAction for [pl.com.uhc.db.hibernates.dto.ster.Message] object 
2014-10-29 11:35:31,874 Thread-8 ActionQueue- Adding insert with no non-nullable, transient entities: [EntityInsertActionpl.com.uhc.db.hibernates.dto.ster.Message#10107] 
2014-10-29 11:35:31,877 Thread-8 ActionQueue- Adding resolved non-early insert action. 
2014-10-29 11:35:31,880 Thread-8 IdentifierValue$4- ID unsaved-value strategy UNDEFINED 
2014-10-29 11:35:31,883 Thread-8 AbstractEntityPersister- Getting current persistent state for: pl.com.uhc.db.hibernates.dto.ster.MessageType#1 
Hibernate: 
select 
    messagetyp_.MessageTypeID, 
    messagetyp_.FullName as FullName2_115_, 
    messagetyp_.ShortName as ShortName3_115_, 
    messagetyp_.Type as Type4_115_ 
from 
MessageType messagetyp_ 
where 
messagetyp_.MessageTypeID=? 
2014-10-29 11:35:31,891 Thread-8 LogicalConnectionImpl- Obtaining JDBC connection 
2014-10-29 11:35:31,894 Thread-8 LogicalConnectionImpl- Obtained JDBC connection 
2014-10-29 11:35:31,897 Thread-8 JdbcCoordinatorImpl- Registering statement [[email protected]] 
2014-10-29 11:35:31,900 Thread-8 BasicBinder- binding parameter [1] as [INTEGER] - [1] 
2014-10-29 11:35:31,906 Thread-8 JdbcCoordinatorImpl- Registering result set [[email protected]] 
2014-10-29 11:35:31,909 Thread-8 BasicExtractor- extracted value ([FullName2_115_] : [VARCHAR]) - [Komunikat statystyczny zwrotny[SWZ]] 
2014-10-29 11:35:31,912 Thread-8 BasicExtractor- extracted value ([ShortName3_115_] : [VARCHAR]) - [SWZ] 
2014-10-29 11:35:31,914 Thread-8 BasicExtractor- extracted value ([Type4_115_] : [VARCHAR]) - [P_SWI] 
2014-10-29 11:35:31,917 Thread-8 JdbcCoordinatorImpl- Releasing result set [[email protected]] 
2014-10-29 11:35:31,920 Thread-8 JdbcCoordinatorImpl- Closing result set [[email protected]] 
2014-10-29 11:35:31,924 Thread-8 JdbcCoordinatorImpl- Releasing statement [[email protected]] 
2014-10-29 11:35:31,928 Thread-8 JdbcCoordinatorImpl- Closing prepared statement [[email protected]] 
2014-10-29 11:35:31,931 Thread-8 JdbcCoordinatorImpl- Starting after statement execution processing [ON_CLOSE] 
2014-10-29 11:35:31,934 Thread-8 UnresolvedEntityInsertActions- No unresolved entity inserts that depended on [pl.com.uhc.db.hibernates.dto.ster.Message#10107] 
2014-10-29 11:35:31,937 Thread-8 UnresolvedEntityInsertActions- No entity insert actions have non-nullable, transient entity dependencies. 

답변

0

이 방법에 @Transactional을 추가

@Transactional 
public void save(Object entity) { 
    getCurrentSession().save(entity); 
} 

Hibernate가 세션을 생성하는 트랜잭션이 필요합니다. 이 주석을 추가하면 저장이 시작됩니다.

관련 문제