当前位置: 首页 > 知识库问答 >
问题:

合并操作无一例外,但对数据库Glassfish 4.1 JPA没有影响

勾炳
2023-03-14

我得到了一个带有字符串字段的表,并尝试更新此字段并通过EntityManager将更新合并到数据库。这已经完成,没有例外,但我看到对数据库没有影响,并且没有什么想法了。希望有人有想法。在下面的示例中,匹配!=null并且使用这两个打印语句,我将预期值写入我的日志。但是事务中的合并对数据库没有影响,即使提交终止了。

@Named
@SessionScoped
@ManagedBean
public class LoginController implements Serializable {

    @PersistenceUnit
    private EntityManagerFactory emf;

    public String mymethod(){
        ...
        match.setPwdResetId(rs);
        System.out.println("reset it is now "+match.getPwdResetId());
        try{
            ut.begin();
            emf.createEntityManager().merge(match);
            ut.commit();
        }
        catch(Exception e){
            FacesMessage m2 = new FacesMessage("Values could not be saved. ");
            FacesContext.getCurrentInstance().addMessage("ResetForm", m2);
            System.out.println("exceptio persisting "+e);
            return "message.jsf";
        }  
        System.out.println("reset it is now2 "+match.getPwdResetId());

共有1个答案

裴姚石
2023-03-14

请分离实体并重试。您可以在JPA2规范中阅读更多内容。我发布了合并操作的示例:

应用于实体X的合并操作的语义如下:

>

  • 如果X是一个分离的实体,则将X的状态复制到具有相同标识的预先存在的托管实体实例X'上,或者创建X的新托管副本X'。

    如果X是一个新的实体实例,则会创建一个新的托管实体实例X',并将X的状态复制到新的托管实体
    实例X'中。

    如果X是已删除的实体实例,则合并操作将引发IllegalArgumentException(或者事务提交将
    失败)。

    如果X是托管实体,则合并操作会忽略该实体,但是,如果已使用级联元素值cascade=merge或cascade=ALL注释对这些关系进行了注释,则合并操作会级联到X中的
    关系引用的实体。

    对于由X的关系引用的所有实体Y,其级联元素值cascade=MERGE或cascade=all,Y被递归地合并为Y。对于X引用的所有Y,X'被设置为
    引用Y'。(请注意,如果管理X,则X与X'是同一个对象。)

    如果X是一个合并到X'的实体,并且引用了另一个实体Y,其中未指定cascade=MERGE或cascade=ALL,那么从X'导航同一关联将产生一个对与Y具有相同持久标识的托管对象Y'的引用。

    持久性提供程序不得合并未获取的标记为LAZY的字段:它必须在合并时忽略此类字段。实体使用的任何版本列都必须由持久性运行时实现在合并操作期间和/或在刷新或提交时检查。在没有版本列的情况下,持久性提供程序运行时在合并操作期间不会进行额外的版本检查。

    你可以在这里找到完整的pdf

  •  类似资料:
    • 本文向大家介绍Python对数据库操作,包括了Python对数据库操作的使用技巧和注意事项,需要的朋友参考一下 Windows下安装MySQL-python 下载地址:https://pypi.python.org/pypi/MySQL-python/1.2.5 安装到系统即可。 linux下安装MySQL-python以连接MySQL: 下载地址:https://pypi.python.org/

    • Sorted Set的实现是hash table(element->score, 用于实现ZScore及判断element是否在集合内),和skip list(score->element,按score排序)的混合体。 skip list有点像平衡二叉树那样,不同范围的score被分成一层一层,每层是一个按score排序的链表。 ZAdd/ZRem是O(log(N)),ZRangeByScore/

    • 本文向大家介绍jdbc操作mysql数据库实例,包括了jdbc操作mysql数据库实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了jdbc操作mysql数据库的方法。分享给大家供大家参考。具体如下: 希望本文所述对大家的JSP程序设计有所帮助。

    • 本文向大家介绍JavaScript操作Oracle数据库示例,包括了JavaScript操作Oracle数据库示例的使用技巧和注意事项,需要的朋友参考一下 我还是IT界的一只小菜鸟,参加工作时间不长,不过凭着自己的一颗好学的心还有自己永不停止的学习脚步,自己在编程方面也是收获颇丰~~ 一直以为JavaScript想和数据库交互必须通过AJAX来调用服务器端代码(C#或JAVA)才行,但最近才发现J

    • 本文向大家介绍ASP.NET数据库操作类实例,包括了ASP.NET数据库操作类实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了ASP.NET数据库操作类。分享给大家供大家参考,具体如下: 更多关于asp.net相关内容感兴趣的读者可查看本站专题:《asp.net优化技巧总结》、《asp.net字符串操作技巧汇总》、《asp.net操作XML技巧总结》、《asp.net文件操作技巧汇总》

    • 请帮忙 我正在尝试为我拥有的一款游戏(Android)构建APK。我试过构建和构建并运行,但都不适合我<当我使用“构建”时,我会遇到以下两个问题。第一个问题是,它说构建成功了,但没有任何构建/APK。第二个问题是,嗯,我对它知之甚少。在下面。 使用成功的UnityEngine的结果完成构建。GUI实用程序:过程事件(int32,intPtr) 虽然它说构建已经完成,结果成功了,但这是错误的。我的意