コード行と別の行を実行すると、それらが同じ hibernate トランザクション内で実行されているか、別のトランザクション内で実行されているかをどのように判断できますか? 現在のトランザクションの一意の ID を利用できるようにすると、ハード バグを調査する際に便利な機能になります。
メソッドを持つTransactionStatus
実装にキャストしようとしましたが、その結果、異なる hashCode を持つ 3 つの HibernateTransactionObject が作成されました... 役に立ちません。DefaultTransactionStatus
getTransaction()
status1 ne status2
以下の例では、 andのような式が必要status2 eq status3
でした。ただし、との両方に対してequals()
常に返されます。false
TransactionStatus
HibernateTransactionObject
Dog.withTransaction { TransactionStatus status1 ->
Dog.withNewTransaction { TransactionStatus status2 ->
Dog.withTransaction { TransactionStatus status3 ->
print(status1)
print(status2)
print(status3)
}
}
}
出力:
org.springframework.transaction.support.DefaultTransactionStatus@d42932c / org.springframework.orm.hibernate3.HibernateTransactionManager$HibernateTransactionObject@3f02d1d0
org.springframework.transaction.support.DefaultTransactionStatus@598b083a / org.springframework.orm.hibernate3.HibernateTransactionManager$HibernateTransactionObject@dcc3481
org.springframework.transaction.support.DefaultTransactionStatus@5803214e / org.springframework.orm.hibernate3.HibernateTransactionManager$HibernateTransactionObject@36c945c3
Grails 2.2.0、休止状態 3.6