【发布时间】:2015-08-12 22:09:25
【问题描述】:
当 Book 对象被持久化时,Insert 上的触发器运行以创建事务记录(在单独的表中)。
当我创建 Book 的实例并保存它时,我希望在 transactions() 数组中看到这条记录,但它一直是空的。
Book book = new Book("Moby Dick", "Melville", "hardcover");
book = bookRepository.saveAndFlush(book);
if( book != null)
assertTrue("There is no transaction history", book.transactions().size() > 0 );
这总是失败。这也是如此(我试图重新加载数据):
public int addBook()
{
int bookID;
Book book = new Book("Moby Dick", "Melville", "hardcover");
book = bookRepository.saveAndFlush(book);
if( book != null)
bookID = book.getID();
return bookID;
}
@Test
public void testNewBookTrans()
{
int aBook = addBook();
bookRepository.findAll();
transactionRepository.findAll();
Book book = bookRepository.findOne(bookID);
if( book != null )
assertTrue("Still no transactions", book.getTransactions().size() > 0);
}
然而,如果我让这个测试失败,重新启动 JUnit,然后查询同一本书,它有触发器添加的事务。
所以,一定有某种方法可以使数据库缓存失效或重新加载,但我没有看到它。
【问题讨论】:
-
加入 2 个实体时遇到同样的问题
标签: java spring jpa caching triggers