0

我在对话中遇到了刷新模式的问题:

如果我在 @Begin(..) 注释中将刷新模式设置为手动,Hibernate 仍然会将附加实体上的任何更改直接填充到数据库中。

CustomerBranch 是实体

@Begin(join=true) 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());

}

在上面的方法中,我在这里将列表添加到 custBranchesList 我不能使用任何持久化仍然直接更改反映数据库

组件.xml

对话超时=“120000”父对话-id-参数=“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@"/>
4

1 回答 1

0

@Begin当你的方法执行时,也许你已经在对话中了?join=true即使您指定了另一个值,也只会保持先前的对话不变,并且不会更改其 flushMode。检查尝试nested=true

于 2012-07-06T21:13:31.070 回答