迁移到WildFly 8.2.0后,更新失败

时间:2015-09-15 15:52:16

标签: jsf wildfly seam

我们已将我们的应用程序从JBoss 5.1.0 GA迁移到WildFly 8.2.0,为实现这一目标,我们已将技术升级到以下版本。

JBoss Seam 2.2.0 to Seam 2.3.1
Hibernate 3.3.0 to 4.0.1
JSF 1.2 to 2.1

我们可以加载所有页面并成功保存数据。但是,当我们使用EntityHome时,我们无法更新数据。

我使用h:commandButton来保存数据

<h:commandButton id="save" 
                 styleClass="button" 
                      value="Save" 
                     action="#{userDetailMgr.doPersist}"
                   rendered="#{!userDetailHome.managed}"/>  

        <h:commandButton id="update" 
                 styleClass="button" 
                      value="Save" 
                     action="#{userDetailMgr.doUpdate}"
                   rendered="#{userDetailHome.managed}"/>

userDetailHome如下所示

@Name("userDetailHome")
public class UserDetailHome extends
  EntityHome<UserDetailHome> {
 //Override the isManaged() method to identify the results
 @Override
public boolean isManaged() {
System.out.println("Managed Value " + super.isManaged());
return super.isManaged();
}
}

userDetailMgr如下所示

@Name("userDetailMgr")
@Scope(ScopeType.SESSION)
public class UserDetailMgr extends AbstractManager
implements Serializable {
@In
EntityManager entityManager;
public String doUpdate() {
userDetailHome.update();
}
public String doPersist() {
userDetailHome.persist();
}
}

基于UserDetailHome中的sysout isManaged()我观察到在加载页面时,我们得到正确的值(true),在EntityHome的getInstancc()中加载所选日期。 加载页面后,EntityHome中的值不再可用。

当我们尝试更新(任何操作)数据时,我们没有获得在页面加载时加载的所选实例,它正在为新实例提供主键为null。由于所选实例在getInstance()中不可用,因此它将被视为新条目而不是更新现有条目。

以下是components.xml

中的配置
<persistence:managed-persistence-context auto-create="true"
name="entityManager"
persistence-unit-jndi-name="java:/projectEntityManagerFactory" />

在persistence.xml中

 <property name="jboss.entity.manager.factory.jndi.name"
value="java:/projectEntityManagerFactory" /> 
<property name="hibernate.transaction.jta.platform"  
 value="org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform" />

我怀疑这个问题是由于迁移了接缝版本。

如果我遗漏了任何东西,请告诉我。

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。之前我们使用的是JSF 2.1.29,现在我将我的JSF降级为2.1.7,这是由Seam 2.3.1提供的。