Jpa ejb未合并到数据库
我有一个带有jpa、ejb、backingbean和jsp的结构。我能够查询数据库并将结果返回到页面,但当我尝试合并(更新)ejb时,它不起作用。没有错误,但不会更新值。为了测试,我只是硬编码了这些值。如果你能告诉我我正在做什么工作,我将非常感激: jpa: ejb: 支持bean:Jpa ejb未合并到数据库,jpa,sql-update,ejb,Jpa,Sql Update,Ejb,我有一个带有jpa、ejb、backingbean和jsp的结构。我能够查询数据库并将结果返回到页面,但当我尝试合并(更新)ejb时,它不起作用。没有错误,但不会更新值。为了测试,我只是硬编码了这些值。如果你能告诉我我正在做什么工作,我将非常感激: jpa: ejb: 支持bean: package com.ray.adtf.web; import javax.faces.bean.ManagedBean; import javax.ejb.EJB; import com.ray.adtf.e
package com.ray.adtf.web;
import javax.faces.bean.ManagedBean;
import javax.ejb.EJB;
import com.ray.adtf.ejb.*;
import com.ray.adtf.jpa.Gridweight;
@ManagedBean
public class gridWeight {
@EJB
private GridWeightBean ejb;
public Gridweight getGridWeight( int vgridid) {
Gridweight weight1 = ejb.getGridweight(vgridid);
return weight1;
}
public String updWeight() {
Gridweight gw = ejb.getGridweight(2);
gw.setGridid(2);
gw.setDrawing("99");
ejb.updWeight(gw);
return null;
}
}
谢谢你 您的实例来自哪里?您如何处理PU/代码中的事务?还有更多事情需要检查: 你是怎么得到体重的?合并在某些实体状态下不起任何作用:
- 如果实体已经在持久性上下文(会话)中,则除了级联之外,不会采取任何操作
- 如果分离实体,将返回一个副本(对象),该副本将被附加(管理)
- 如果实体是暂时的(新实例),则会保存该实体并返回一个持久(和托管)副本
- 如果实体已分离,但当前实体管理器中存在具有相同标识符的对象,则分离对象的状态将复制到当前持久实体中,并返回它(当前)
合并比持久化消耗更多的机器资源,所以如果您只是存储新实例,最好使用持久化 不确定它没有显示jsp代码,但它是:您也可以提供backingbean代码吗?不确定为什么backingbean没有发布……任何帮助都会很好。谢谢您好,您可以再次查看代码吗?由于某种原因,当我发布问题时,支持bean代码被删除了。。。它现在应该在那里,这将回答你上面发布的大多数问题。非常感谢。
package com.ray.adtf.ejb;
import com.ray.adtf.jpa.Gridweight;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.PersistenceContextType;
import java.math.BigInteger;
import java.util.List;
@Stateless
public class GridWeightBean {
@PersistenceContext
private EntityManager em;
public void updWeight(Gridweight gridweight) {
em.merge(gridweight);
}
public Gridweight getGridweight(Integer vgridid) {
return em.createQuery("FROM Gridweight where gridid = "+ vgridid, Gridweight.class).getSingleResult();
}
}
package com.ray.adtf.web;
import javax.faces.bean.ManagedBean;
import javax.ejb.EJB;
import com.ray.adtf.ejb.*;
import com.ray.adtf.jpa.Gridweight;
@ManagedBean
public class gridWeight {
@EJB
private GridWeightBean ejb;
public Gridweight getGridWeight( int vgridid) {
Gridweight weight1 = ejb.getGridweight(vgridid);
return weight1;
}
public String updWeight() {
Gridweight gw = ejb.getGridweight(2);
gw.setGridid(2);
gw.setDrawing("99");
ejb.updWeight(gw);
return null;
}
}