최대 절전 모드에서 한 번에 하나의 항목을 커밋하려면 어떻게해야합니까? 항목의 배열 목록이 있습니다. "더러워지다"로 인해 기록이 실패 할 경우를 대비하여 모든 기록을 DB에 저장해야합니다 .. 무시하고 다른 기록으로 넘어가도됩니다.
아래와 같이 루프에서 레코드 커밋을 시도했습니다.
session.beginTran..
loop
{
try
{
session.update(item)
session.commit()
}
catch(Exception e)
{ //log & ignore }
}
이로 인해 "중첩 된 Tran 불가능"오류가 발생했습니다 ..
루프 내에서 beginTran을 이동했습니다.하지만 m 관찰하는 것은 .. 내 첫 번째 레코드가 실패하면 {item} 객체가 루프 내에서 목록에서 다음 레코드를 가져 오더라도 각 커밋은 동일한 레코드를 다시 업데이트하려고합니다.
loop
{
try
{
session.beginTran
session.update(item) //Eventhough item object gets loaded properly within the loop.. every time commit is executed, its trying to save the first failed record again.
session.commit()
}
catch(Exception e)
{ //log & ignore }
}
Hibernate 예외는 복구 할 수 없습니다. 세션이 일관되지 않은 상태로 남겨져 더 이상 사용을 신뢰할 수 없게됩니다. 세션에서 예외가 발생하자마자 세션을 삭제해야합니다.
트랜잭션 당 단일 세션을 사용하십시오.
매뉴얼 참조 :
세션에서 SQLException을 포함하여 예외가 발생하면 즉시 데이터베이스 트랜잭션을 롤백하고 Session.close ()를 호출하고 Session 인스턴스를 버립니다. 세션의 특정 방법은 세션을 일관된 상태로 유지하지 않습니다. Hibernate에 의해 발생한 예외는 복구 가능한 것으로 처리 될 수 없습니다. finally 블록에서 close ()를 호출하여 세션이 닫히는 지 확인합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다