我在对话时遇到了刷新模式的问题:
如果我在@Begin(..)注释中将flush模式设置为手动,Hibernate仍会将附加实体上的任何更改直接填充到数据库中。
CustomerBranch是实体
@Begin(加入=真) public String addCustBranch()抛出异常{
CustomerBranch customerBranch=new CustomerBranch(); BeanUtils.copyProperties(customerBranch,doCustomerBranch) branchesMap.get(selectedBranch.toLowerCase()).getCustomerBranch().add(customerBranch) custBranchesList.add(customerBranch); }
@Begin(flushMode=FlushModeType.MANUAL,join = true)
public void populateSelectedList() throws Exception {
// PersistenceProvider.instance().setFlushModeManual(getEntityManager());
((Session)getEntityManager().getDelegate()).setFlushMode(FlushMode.MANUAL);
custBranchesList.clear();
custBranchesList.addAll(branchesMap.get(selectedBranch.toLowerCase()).getCustomerBranch());
}
在上面的方法中,我将list添加到custBranchesList这里我不能使用任何persist仍然直接更改反映数据库
componet.xml
conversation-timeout =“120000”parent-conversation-id-parameter =“pid”/>
<web:hot-deploy-filter url-pattern="/*.mobee"/>
<persistence:entity-manager-factory installed="@seamBootstrapsPu@"
name="entityManagerFactory" persistence-unit-name="mobeeadmin"/>
<persistence:managed-persistence-context auto-create="true"
entity-manager-factory="@seamEmfRef@" name="entityManager" persistence-unit-jndi- name="@puJndiName@"/>
答案 0 :(得分:0)
当你的@Begin
方法执行时,也许你已经在对话中? join=true
只是保持先前的对话不变,即使您指定了另一个值,也不会更改其flushMode。要查看尝试nested=true
。