我尝试为@Transactional
.
@ContextConfiguration(locations = {"classpath:/META-INF/spring/app-context.xml" })
@RunWith(SpringJUnit4ClassRunner.class)
public class TransactionalAnnotationTest {
public static final BigDecimal PROD_ID = new BigDecimal(1234);
@PersistenceContext
HibernateEntityManager em;
@Test
public final void testTransactionIsolation() {
String original = em.find(ProductImpl.class, PROD_ID).getDescription();
// original = "Foo"
updateTx(original);
}
@Transactional
public final void updateTx(String original) {
ProductImpl product = em.find(ProductImpl.class, PROD_ID);
product.setDescription("Bar");
whatIsInDB(original);
}
private void whatIsInDB(String original) {
String sameTxDescription = em.find(ProductImpl.class, PROD_ID).getDescription();
assert !sameTxDescription.equals(original);
}
}
它失败了!第二个em.find
不应该返回带有“Bar”的产品吗?