2012-11-20 27 views
1

我的項目中有兩個實體:MembershipUser。 A MembershipUser。我想在Membership上讀一個樂觀的鎖定女巫增量,所以我在使用find時添加了lockTypeMode。Hibernate LockModeType.OPTIMISTIC_FORCE_INCREMENT在其他實體上傳播

@Override 
public Membership find(Long primaryKey) { 
    return em.find(type, primaryKey, LockModeType.OPTIMISTIC_FORCE_INCREMENT); 
} 

我添加了@Version註釋。 然而,當我測試,我得到這個錯誤:

Caused by: org.hibernate.AssertionFailure: cannot force version increment on non-versioned entity 
at org.hibernate.persister.entity.AbstractEntityPersister.forceVersionIncrement(AbstractEntityPersister.java:1283) 
at org.hibernate.action.EntityIncrementVersionProcess.doBeforeTransactionCompletion(EntityIncrementVersionProcess.java:51) 
at org.hibernate.engine.ActionQueue$BeforeTransactionCompletionProcessQueue.beforeTransactionCompletion(ActionQueue.java:543) 
... 55 more 

然後我說@版本上User並沒有更多的錯誤。但版本號在User上遞增,所以我假設我會得到OptimisticLockException,我不想要這種行爲。我如何擺脫User的鎖?

+0

那是不夠清楚嗎? – D0m3

回答

0

您可以嘗試設置現場用戶@OptimisticLock(excluded=true)Hibernate API)的成員資格類:

class Membership { 
    .... 
    @OptimisticLock(excluded=true) 
    User user;  
} 
相關問題