Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jpa ejb未合并到数据库_Jpa_Sql Update_Ejb - Fatal编程技术网

Jpa ejb未合并到数据库

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

我有一个带有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.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;
    }    
}