无法在 Eclipselink 上合并日期

2024-04-29

我的会话 bean 不会对托管实体执行更新。

我已经包含了相关类的代码。当我使用 prime faces 计划组件修改事件的日期字段并将修改后的实体传递给会话 bean 并调用 em.merge(event) 时,实体管理器不会尝试更新实体,并且不会在数据库。

会话Bean

@Stateless
@LocalBean
public class CalendarSessionBean implements Serializable {

    @PersistenceContext
    private EntityManager em;

    public void moveEvent (CalendarEvent event) {
        em.merge(event);
        Logger.getLogger("example").log(Level.INFO, "Moved {0}", event.getStartDate());
    }
}

实体Bean

@Entity
public class CalendarEvent implements Serializable {

    @Id
    private Long id;

    @PrePersist
    @PreUpdate
    void onUpdate () { // Never called
        Logger.getLogger("example").log(Level.INFO, "Updating event on the {0}", this.getStartDate());
    }

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "DTE_STR", nullable = false)
    @NotNull
    private Date start; // Column that sould update

    // ... rest omitted        
}

JSF 托管 Bean

@ManagedBean(name="agenda")
@ViewScoped
public class AgendaMBean implements Serializable {

    @EJB CalendarSessionBean calendarSession;

    public ScheduleModel getModel () {
        if (model == null) {
            model = new DefaultScheduleModel();

            final Collection<CalendarEvent> calendarEvents = calendarSession.findAll();
            for (final CalendarEvent calendarEvent : calendarEvents) {
                Log.log(Level.FINEST, "Adding to model the {0}", calendarEvent.getStartDate()); 
                final DefaultScheduleEvent event = new DefaultScheduleEvent();
                event.setId(String.valueOf(calendarEvent.getId()));
                event.setStartDate(calendarEvent.getStart());                
                event.setData(calendarEvent);
                model.addEvent(event);
            }
        }
        return model;
    }

    public void onEventMove (final ScheduleEntryMoveEvent event) {
        final CalendarEvent calendarEvent = 
                (CalendarEvent) event.getScheduleEvent().getData();
        Log.log(Level.FINEST, "Moving event to {0}", calendarEvent.getStartDate());
        calendarSession.moveEvent(calendarEvent);   
    }
}

JSF Facelet

<p:schedule value="#{agenda.model}">
    <p:ajax event="eventMove" 
            listener="#{agenda.onEventMove}"/>
</p:schedule>

Output

Adding to model the Fri Feb 03 00:00:00 CET 2012 // ManagedBean.getModel()
Moving event to Wed Feb 08 00:00:00 CET 2012 // ManagedBean.onEventMove()
Moved Wed Feb 08 00:00:00 CET 2012 // SessionBean.move()
// No PrePersist log statement

On:

  • EJB 3
  • JPA 2 EclipseLink
  • 由 Glassfish 3 管理的与 MySQL 的 JTA 连接
  • JSF 2
  • 素面 3

SOLUTION:

根据 James 的回答,问题在于 Eclipselink 对时间场的处理。

Link: http://wiki.eclipse.org/Using_EclipseLink_JPA_Extensions_(ELUG)#How_to_Use_the_.40Mutable_Annotation http://wiki.eclipse.org/Using_EclipseLink_JPA_Extensions_%28ELUG%29#How_to_Use_the_.40Mutable_Annotation

@Temporal(TemporalType.TIMESTAMP)
@Column(name = "DTE_STR", nullable = false)
@Mutable(true) // Solution
@NotNull
private Date start;

合并是否适用于其他(非日历)属性?

检查正在合并的对象的日历是否与托管对象日历是同一实例 (==)。

您可能需要设置持久性单元属性, “eclipselink.temporal.mutable”=“true” (或在映射上使用@Mutable)

或者确保设置一个新的日历实例,而不是修改现有的日历实例。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法在 Eclipselink 上合并日期 的相关文章

  • 更改 Java 字符串中的日期格式

    I ve a String代表一个日期 String date s 2011 01 18 00 00 00 0 我想将其转换为Date并将其输出到YYYY MM DD format 2011 01 18 我怎样才能实现这个目标 好的 根据我
  • 使用 createNativeQuery 调用 Oracle 存储过程

    我需要使用 JPA 调用存储过程并找到这篇文章 http www oracle com technology pub articles vasiliev jpql html http www oracle com technology pu
  • IBM Websphere JPA 配置 - 如何更新 persistence.xml

    我是 EJB 3 和 JPA 的新手 我在应用程序服务器中创建了一个数据源 它是jdbc AppDataSource 默认持久性提供程序保留为com ibm websphere persistence PersistenceProvider
  • 颤振文本小部件仅显示最后一个条目

    我正在尝试在 flutter 中创建日历 目前我正在实施这些活动 为了测试这一点 我创建了一个方法来检查当前日期 即创建行的时间 是否有事件 如果是这种情况 则会在表示内容的容器中打印 x 整个事情只是第一次测试 看它是否在原则上有效 当我
  • JPA 中的复合主键

    EmbeddedId 或 IdClass 注释用于表示复合主键 我该如何使用不带 EmbeddedId或IdClass 的复合主键 如果可以在没有 EmbeddedId或IdClass 的情况下使用复合主键 那么我该如何使用EntityMa
  • 如何将整数日期转换为格式化日期字符串(即 2012009 到 2/01/2009)

    有任何想法吗 我想不出任何办法 我有一个从 csv 文件加载的日期列表 它们被保存为所有整数 或者更确切地说是一串整数 即 2009 年 1 月 1 日 1012009 关于如何将 1012009 变成 1 01 2009 有什么想法吗 T
  • SQLAlchemy 默认日期时间

    这是我的声明模型 import datetime from sqlalchemy import Column Integer DateTime from sqlalchemy ext declarative import declarati
  • Spring-roo REST JSON 控制器损坏日期字段

    我有一个以两种方式使用的数据实体 我在页面加载时用其中的一些数据填充表格 当您单击该列的一行时 我通过 AJAX 获取该项目的详细信息并将其显示在表单字段中 我在服务器端使用 Spring Roo 生成的 REST 端点 在客户端使用 Ba
  • 如何在 Kotlin 中验证输入字符串是否为有效日期?

    So my Kotlin应用程序正在接受一个输入字符串 该字符串应该是某种格式的日期 fun haveFun dateStr String var formatter DateTimeFormatter ofPattern dd MMM y
  • JPA中flush的确切目的是什么

    一些令人困惑的解释 冲洗 刷新是将底层持久存储与内存中保存的持久状态同步的过程 它将更新或插入到正在运行的事务中的表中 但它可能不会提交这些更改 如果无论如何更改仅在提交后才会保留在数据库中 那么为什么要在代码中间刷新呢 运行刷新后 如果对
  • PESSIMISTIC_WRITE 是否锁定整个表?

    只是为了确保我正确理解事情是如何运作的 If I do em lock employee LockModeType PESSIMISTIC WRITE 它会仅阻止该实体吗 employee 或整个表Employees 如果重要的话 我正在谈
  • 具有日期变量的 SSIS For 循环容器

    我想创建一个每月包 在 ODBC 上执行每日查询并写入输出文件 更具体地说 必须首先在上个月的第一天执行查询 e g 01 11 2018 然后下一个 02 11 2018 直到上个月的最后一天 30 11 2018 日期变量当前保存为字符
  • 从字符串中删除识别的日期

    作为输入 我有几个包含不同格式日期的字符串 例如 彼得在16 45 我的生日是1990年7月8日 On 7 月 11 日星期六我会回家 I use dateutil parser parse识别字符串中的日期 在下一步中 我想从字符串中删除
  • 在javascript中,如何从日期字符串“yyyy-mm-dd”或时间戳中提取月份?

    我有一个数据库 其中包含某些以 json 对象形式记录的事件 每个事件都有自己的 JS 毫秒时间戳 格式为 yyyy mm dd 的日期字符串以及分钟条目 我想使用时间戳或日期字符串 以更容易的为准 作为算法的输入 该算法将计算给定月份输入
  • 给定“java.sql.SQLIntegrityConstraintViolationException”是否可以确定错误的列

    鉴于我有一个类型为 java sql SQLIntegrityConstraintViolationException 的异常 是否可以以编程方式确定错误的列 或多列 我问这个问题是因为我想将错误映射回客户端的数据模型以指示错误的字段 例如
  • 在PHP中根据日期显示图像

    在我的计算机上的某个位置 我有一个 PHP 脚本 用于根据日期显示图像 这将允许我在特定日期或选定日期之间显示不同的图像 并在当前日期未列出时显示默认日期要显示的特定图像 我最近的一个硬盘驱动器出现了问题 丢失了一堆文件 我担心这个脚本就是
  • 外键必须与引用的主键具有相同的列数

    我知道这个话题在这里讨论了很多次 但我仍然坚持一个例外 外键必须与引用的主键具有相同的列数 我正在使用 spring data 和 hibernate 我的ID类别 Embeddable public class ProxyDienstRe
  • Java - 在特定日期执行方法[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我需要在每年的特定日期执行一个方法 我该如何在java中执行此操作 Thanks Chris 按优先顺序排列 The Quartz htt
  • 获取特定月份/年份的第一天

    有没有比以下更好的方法返回特定月份 年份的第一天的日期 month date m year date Y from date Y m d mktime 0 0 0 month 1 year 这在计算上并不完全优雅 但我喜欢它 因为它非常可读
  • 条件在反应本机生产中失败,但在开发中有效

    我创建了一个反应本机应用程序 我需要通过它进行比较 如果属实 就会执行死刑 问题是 该条件适用于 React Native 开发模式 而不适用于 React Native 生产版本 我使用 firebase 作为数据库 也使用 redux

随机推荐

  • 三星Android BLE多次读/写

    在 Samsung 4 2 到 4 3 BLE 应用程序迁移指南中 http developer samsung com ble http developer samsung com ble 它说 堆栈和 F W 的同步性质没有受到影响 那
  • 如何有效地将许多文件移动到新服务器?

    我正在更换托管提供商 需要将数百万个上传的文件传输到新服务器 所有文件都位于同一目录中 是的 你读对了 过去我这样做过 压缩源服务器中的所有文件 scp到新服务器的 zip Unzip Move directory to appropria
  • ViewPager 拦截所有 x 轴 onTouch 事件。如何禁用?

    Scope 有一个包含两个片段的viewpager 其中一个片段有一个布局 用于监听 X 轴上的 onTouch 变化 Problem 当沿 X 轴触摸和滑动时 布局几乎不会获取所有 Action Move 事件 看来 viewpager
  • 对shinyTable进行子集化

    我目前正在玩shinyTable这是一个shinyHandsonTable 的兼容实现 https github com trestletech shinyTable https github com trestletech shinyTa
  • 有选择地中止通过 Extjs Direct 代理发送的 ajax 请求

    我有一个商店 它使用 Extjs 直接代理从列表中加载 w r t 项目 proxy type direct api read bomManagementAction bomQuickDetails 响应显示在网格面板中 如果选择的项目数量
  • 在 Chrome 中打印背景颜色

    我正在尝试在 Chrome 中打印 PHP 生成的文档 在浏览器上看起来不错链接到我要打印的页面 http www abbeysoft co uk adi 241 quote php但是我的打印机无法打印任何彩色背景 有人可以提供任何建议吗
  • 哪些用例需要 #define 而不使用令牌字符串?

    我遇到过 define预处理器指令之前在学习C时 然后在我读过的一些代码中也遇到过它 但除了使用它来明确替换常量和定义宏之外 我还没有真正理解它在没有 主体 或标记字符串的情况下使用的特殊情况 以这一行为例 define OCSTR X 就
  • ffmpeg创建RTP流

    我正在尝试使用 ffmpeg 进行编码和流式传输 libavcodec libavformat MSVC x64 with Zeranoe builds 这是我的代码 很大程度上改编自编码示例 删除了错误处理 include stdafx
  • GCM 条款和条件

    有谁知道在哪里可以找到有关哪些内容可以通过 GCM 通知发送以及哪些内容不可以发送的条款和条件 我似乎在任何地方都找不到任何文档 当您注册开设 Google API 帐户时 您会得到这些条款和条件 https developers goog
  • 包java.time不存在,jdk1.8

    嗯 我刚刚开始从事代号工作 我对 Java 有相当不错的经验 我的代码一切都很好 没有任何问题 但在编译时我得到了这个 error package java time does not exit import java time Local
  • 如何在同一个项目中连接两个数据库MySQL和MongoDB?是否可以?

    目前我正在使用 Hibernate MySQL 和 Spring 配置对我来说运行良好 但是一旦我配置了另一个配置 mongo config xml 文件并尝试使用 mongodb 运行测试用例 它就显示创建名为 的 bean 时出错从第一
  • EPERM:不允许操作,mkdir 'C:\Program Files\nodejs\node_modules\.staging

    我正在尝试在我的项目上运行 npm install 但它显示 EPERM 不允许操作 mkdir C Program Files nodejs node modules staging 我没有 root 管理访问权限 我在我的系统中以本地用
  • ? LIKE(列 || '%')

    我可以有这样的条件吗 SELECT FROM table WHERE LIKE column 哪里的 是一个字符串参数值 例如 这些参数值 当列等于时应返回 true admin products admin products 1 admi
  • Boto3 - 打印 AWS 实例平均 CPU 利用率

    我正在尝试仅打印 AWS 实例的平均 CPU 利用率 此代码将打印出 响应 但最后的 for 循环不会打印平均利用率 有人可以帮忙吗 先感谢您 import boto3 import sys from datetime import dat
  • 如何设置报表服务器实例?

    我正在尝试设置 Microsoft SQL Server Reporting Services 我打开 Reporting Services 配置管理器 它要求输入服务器名称 问题是 我不知道服务器名称 因为据我所知还没有设置报表服务器 那
  • 以编程方式创建进度绘制

    我有一个场景 我需要有大量的进度条可绘制对象 我无法为所有这些创建 xml 资源 因为我希望用户选择一种颜色 然后用于动态创建可绘制对象 下面是 xml 中的一个这样的可绘制对象 我如何以编程方式创建这个精确的可绘制对象
  • Mongoose 更新或插入许多文档

    我正在尝试使用最新版本的 mongoose 插入对象数组 或者更新相应的产品 ID 是否已存在 我一生都无法找出正确的使用方法 bulkWrite updateMany 等 而且我似乎无法在不出现错误的情况下找出语法 例如 我正在尝试 Pr
  • 在等式约束的情况下求解线性规划

    我问了一个问题 可以在这里找到 计算最优组合 https stackoverflow com questions 17232596 computing the optimal combination 并有人建议线性规划 我查阅了线性规划和单
  • 从以元组为键的字典中获取 pandas 数据框

    我是Python新手 并且已经在这个问题上挣扎了一段时间 我有一个这样的字典 dict1 a a 5 a b 10 a c 11 b a 4 b b 8 b c 3 我想做的是将其转换为 pandas 数据框 如下所示 a b c a 5
  • 无法在 Eclipselink 上合并日期

    我的会话 bean 不会对托管实体执行更新 我已经包含了相关类的代码 当我使用 prime faces 计划组件修改事件的日期字段并将修改后的实体传递给会话 bean 并调用 em merge event 时 实体管理器不会尝试更新实体 并