我有一個Spring CrudRepository,我用來堅持一個實體。但是,我的實體有一些暫時的字段,我不想將它們存儲在數據庫中,但是,當我調用save()時,我不想丟失它們,但是看起來我總是從保存中得到一個全新的,不同的對象() 方法。因此我失去了我的短暫價值。spring - CrudRepository和豆與瞬態字段
如果我不使用返回的對象並繼續使用我調用save()的原始對象,那麼我只能調用save()一次,否則它會抱怨實體被另一個會話。
任何想法如何讓save()返回我同一個對象嗎?我應該使用不同的存儲庫嗎?我可以添加某種註釋來改變行爲嗎?
@Override
@Transactional
public TestRun saveTestRun(TestRun run)
{
logger.debug("Saving TestRun with Id: " + run.getId() + " " + run.toString());
logger.debug("Timeout 1: " + run.getTimeout());
run.setTimeout(10000000); // set transient field
logger.debug("Timeout 2: " + run.getTimeout());
TestRun r2 = this.repository.save(run);
logger.debug("Timeout 3: " + r2.getTimeout());
logger.debug("Saved TestRun with Id: " + r2.getId() + " " + r2.toString());
return r2;
}
並且這產生:
Saving TestRun with Id: 2 [email protected]
Timeout 1: 90
Timeout 2: 10000000
Payload no-arg constructor
TestRun constructor
TestRun no-arg constructor
Timeout 3: 90
Saved TestRun with Id: 2 [email protected]
好的 - 所以我使用org.springframework.data.repository.CrudRepository來與Hibernate進行交互。所以我很清楚,它沒有持久化方法,所以我需要直接處理Hibernate Session並執行保存和/或持久化方法? 只要儘可能地儘量使用Spring提供的開箱即用框架,但是如果我需要與Hibernate會話交談,我可以。 –