没有 @MapKeyColumn 或 @MapKeyTemporal 注释的时间映射键的默认 TemporalType 是什么?

2024-02-23

我正在为我的实习创建一个 JPA 2.0 Annotation 合规工具包。 现在,我想知道什么时候需要 @MapKeyTemporal 注释,什么时候它是可选的......

我知道,当您使用 @MapKeyColumn 定义映射键的列时,可以通过查看列的类型(以及列定义中的类型)来派生键应映射到的类型。因此,在这种情况下,不需要 @MapKeyTemporal 注释。

当您附加@MapKeyTemporal注释时,列名称默认为ATTRIBUTE +“_KEY”。

当不注解@MapKeyColumn和@MapKeyTemporal时,列名默认为ATTRIBUTE + "_KEY",但是key默认是什么类型呢?或者你应该得到一个错误?

我寻找了类似的情况,发现了@MapKeyEnumerated。 它是相同的,因为它与 @MapKeyColumn 相关,并且它是一个可以映射到多种数据类型的值(java.sql.Date/java.sql.Time/java.sql.Timestamp对于@MapKeyTemporal,以及EnumeratedType.ORDINAL/EnumeratedType.STRING对于@MapKeyEnumerated)。 我发现一处不同: @MapKeyEnumerated 有一个默认值。这个默认值是EnumeratedType.ORDINAL.

我的问题: 当使用具有基本类型为时间类型的映射键的映射时,映射键为了持久性而转换为的默认 TemporalType(根据 JPA 2.0)是什么?


答案似乎是,当 java.util.Date 或 java.util.Calendar 用作地图的键时,没有默认类型。规范本身(我确实认为随规范一起提供的 javadocs 作为规范的一部分)对于 MapKeyTemporal 的使用非常严格。 MapKeyTemporal 声明的 Javadoc:

必须为日期类型的持久映射键指定此注释 和日历。

我认为,如此严格,他们忘记了您提供的情况,具有来自 MapKey 引用的属性的类型信息。在 MapKey 的情况下指定类型没有太大意义,因为类型已经在作为映射值的实体中指定。另外,实体中相应字段的映射键可能具有不同的时间类型,这也是不可取的。

如果未指定 MapKeyTemporal 并且没有其他方法来确定键的类型,则 EclipseLink(参考实现,尽管它并不总是遵循规范)会产生以下异常:

org.eclipse.persistence.exceptions.ValidationException
Exception Description: The attribute [map] from the entity class [class X]
does not specify a temporal type. A temporal type must be specified for persistent  
fields or properties of type java.util.Date and java.util.Calendar.
at org.eclipse.persistence.exceptions.PersistenceUnitLoadingException.exceptionSearchingForPersistenceResources(PersistenceUnitLoadingException.java:126)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

没有 @MapKeyColumn 或 @MapKeyTemporal 注释的时间映射键的默认 TemporalType 是什么? 的相关文章

  • 何时/为何使用/定义接口[重复]

    这个问题在这里已经有答案了 可能的重复 何时最好使用 java 中的接口 https stackoverflow com questions 2586389 when best to use an interface in java Hi
  • JavaFX Platform.runLater 的使用以及从不同线程访问 UI

    我有几个问题Platform runLater 我有一个 JavaFX 应用程序类 在这个类中 我运行一个线程 该线程从网络套接字读取数据 现在当我创建一个新的Stage在线程内部 系统抛出异常 JavaFX 事件调度程序线程和我的网络读取
  • 使用 AbstractTableModel 获取 JTable 中选定的行

    我有一个JTable using AbstractTableModel我在哪里有一个JCheckBox在第一列中用于选择行 现在 我需要从已检查的表中获取选定的行 现在 我按顺序从第一行遍历到最后一行并获取所有选择的行 如下所示 List
  • 如何识别 Java 中的不可变对象

    在我的代码中 我正在创建一个对象集合 这些对象将由各种线程以只有在对象不可变的情况下才安全的方式访问 当尝试将新对象插入到我的集合中时 我想测试它是否是不可变的 如果不是 我将抛出异常 我能做的一件事是检查一些众所周知的不可变类型 priv
  • 要打乱的键值(整数、字符串)列表的最佳结构

    我需要在 Java 中实现一个结构 它是一个键值列表 类型为整数 字符串 并且我想对其进行洗牌 基本上 我想做类似的事情 public LinkedHashMap
  • 是否可以从另一个方法传递 args[] 来调用 main 方法?

    我试图从另一个传递参数的方法调用类的主要方法 就像从命令行运行该类时一样 有没有办法做到这一点 您可以致电main方法就像您调用任何其他 静态 方法一样 MyClass main new String arg1 arg2 arg3 Exam
  • 如何在 Struts 2 OGNL 中将参数传递给方法调用

    我想使用属性作为对象方法的参数
  • 用 java 编写解释器时的 switch 或 if 语句

    当前的作业需要我编写一个程序 以一种非常微小且基本的编程语言 行为有点像 FORTRAN 来读取包含指令的文件并执行这些指令 基本上它是我猜的语言的简单解释器 它是完全线性的 所有语句都是按顺序定义的 并且只有字符串和整数变量 我需要查找和
  • Java 唤醒休眠线程

    我阅读了其他帖子 但没有找到我正在寻找的确切答案 所以我希望有人能给出一些澄清 我有一个将运行一段时间的程序 我有一些在后台运行的线程来执行各种任务 为了简单起见 让我们考虑 3 个线程 ThreadA每 10 秒执行一次任务 其中Thre
  • 以编程方式设置 Logback Appender 路径

    我正在尝试以编程方式设置 Logback 附加程序路径 滚动文件附加器 http logback qos ch apidocs ch qos logback core rolling RollingFileAppender html准确地说
  • BlackBerry SQLite:将一个 SQLite 数据库连接到另一个

    我正在尝试使用 SQLite 将一个 SQLite 数据库附加到 BlackBerry 上的另一个数据库附加数据库 http www sqlite org lang attach html命令 Database d1 d2 Statemen
  • 如何制作无限的jscrollpane?

    我之前已经实现过拖动滚动 但是创建无限滚动窗格的最佳方法是什么 当然不会有任何滚动条 我将实现拖动滚动 我想做的是在无限表面上实现动态加载 EDIT 当然 它实际上不会是无限的 我想问如何伪造它 您可以执行以下操作 AdjustmentCl
  • 不要模拟值对象:过于通用的规则,没有解释

    以下是 Mockito 单元测试框架的引用 不要模拟值对象 为什么有人会想要这样做呢 因为实例化对象太痛苦了 gt 无效 原因 如果创造新的装置太困难 那就是一个迹象 代码可能需要一些认真的重构 另一种方法是创建 价值对象的构建者 有一些工
  • 抽象类或接口。哪种方式是正确的?

    有两种方法可以选择抽象类或接口 微软解决方案和Oracle解决方案 微软 设计指南 请使用抽象 在 Visual Basic 中为 MustInherit 类而不是接口来将协定与实现分离 http msdn microsoft com en
  • HTTP PUT 在 Java 中上传文件

    Edit 我想我已经弄清楚如何执行二进制数据部分 仔细检查代码 但我很确定我做对了 现在 当我尝试按照中所述完成上传时遇到新错误Vimeo API 文档 http vimeo com api docs upload streaming Ed
  • 为什么现在()? (客观化)

    为什么我想要异步加载 Objectify 实体 异步加载到底意味着什么 根据客观化有关加载的文档 https code google com p objectify appengine wiki BasicOperations Loadin
  • 我们可以使用 for-each 循环来迭代 Iterator 类型的对象吗? [复制]

    这个问题在这里已经有答案了 如果我们执行以下操作 我们会收到错误 class FGH public static Iterator reverse List list Collections reverse list return list
  • 战争库中的罐子爆炸

    我们可以将分解的 jar 文件放入 war web inf 库中吗 它在 JBOSS 4 2 中对我不起作用 我收到以下错误并且无法部署应用程序 Caused by javax management RuntimeOperationsExc
  • H2 - (相当)长的 INSERT 失败,错误 42000

    H2 内存中 插入 错误 42000 尝试过版本 1 4 196 1 4 197 1 4 199 我还尝试在 H2 服务器 本地 上执行 INSERT 也失败 给出错误的行 抱歉 但出于安全原因 我无法生成更多 INSERT INTO tb
  • 方法签名中带或不带synchronized关键字的方法具有相同的字节码

    对于以下 2 个类 获得相同的 Java 字节码 java版本 java 版本 1 8 0 181 Java TM SE 运行时环境 构建 1 8 0 181 b13 Java HotSpot TM 64 位服务器 VM 内部版本 25 1

随机推荐

  • WCF Rest 4.0 中不带尾部斜杠的简单 URL 路由

    我有一个基于 WCF REST 服务模板 40 CS 的 WCF REST 4 0 项目 我想公开简单的服务端点 URLwithout尾部斜杠 例如 CarService cs http www domain com cars http w
  • 工具箱 Visual Studio 2015 中缺少报告查看器标记

    我最近安装了 Visual Studio 2015 Community 现在我的工具箱没有报表查看器标签 我的 ASP NET 项目中所有现有的报表查看器都显示 创建控件时出错 我已经检查了所有参考文献 它们似乎没问题 当我运行项目时 报告
  • 如何使用 swt 向表中添加行

    我正在学习 swing 并对将行插入到表格有一个疑问 我的要求是我必须通过按添加按钮添加新行 但我无法继续 请找到下面的代码 如果有人知道请帮助我 public class TableShellExample Display d Shell
  • 如何计算sklearn中交叉验证的每个模型中的特征重要性

    我在用RandomForestClassifier with 10 fold cross validation如下 clf RandomForestClassifier random state 42 class weight balanc
  • 如何在车把模板中使用 {{{{raw-helper}}}}

    我有一个效果很好的车把模板 我希望能够将以下内容放入其中 这显然会在处理车把文件时呈现 所有的 最终都是空白的 这不好 我找到了 raw helper 块助手 并像这样尝试 raw helper
  • 按比例随机将 NA 插入到数据帧中

    我有一个完整的数据框 我希望将数据框中 20 的值替换为 NA 以模拟随机缺失数据 A lt c 1 10 B lt c 11 20 C lt c 21 30 df lt data frame A B C 谁能建议一种快速的方法来做到这一点
  • 获取最大值之前的值

    例如 给定这个稀疏 id 表 id 1 2 3 6 7 我可以使用以下查询从表中获取最高的 id SELECT max id FROM Comics I get id 7 如何获取最高 id 之前的 id 即使值不连续 一般来说 您可以首先
  • VSTO 写入 Excel 中的单元格!

    为什么这有效 Excel Worksheet Application ActiveSheet get Range A1 A1 Value2 text 但这并没有 Excel Worksheet activeSheet Excel Works
  • 泛型作为方法返回类型

    我在 StackOverflow 上四处寻找我面临的问题的答案 我遇到了很多好的答案 但仍然没有回答我的问题 Java中通过反射获取泛型参数的类型 https stackoverflow com questions 1901164 get
  • 在discord.py中添加角色

    我尝试了许多不同的方法 并在 youtube 上进行了搜索 但我尝试的所有方法都不起作用 已过时或不相关 如何向提到的用户添加角色 这就是我的代码 你看 最后我在 里写的 client command commands has permis
  • 根据用户权限隐藏/禁用 GUI 元素的最佳方法?

    我正在启动一个 Web 应用程序 其客户端在纯 ExtJS 中实现 中间层在 Grails 中实现 该应用程序具有基于角色的授权 其中用户可以拥有许多细粒度的角色 例如 SOME FORM READ SOME FORM UPDATE SOM
  • Perforce:p4 集与 p4 信息

    我最近开始在 Windows 7 上使用 perforce 我使用 P4V 在我的本地计算机上同步了 perforce 我试图运行一些其他工具 该工具使用我的 perforce 本地目录映射到我的计算机上的路径 看来它捡错了 在尝试调试时
  • org.springframework.web.client.ResourceAccessException:微服务中的 GET 请求出现 I/O 错误

    我正在从链接开发微服务代码 https github com sivaprasadreddy spring boot microservices series https github com sivaprasadreddy spring
  • 如何删除 VBA/Excel 中 X 行下方的所有内容?

    我有一个包含数字的长变量 X 说是415 如何删除工作表中第 415 行及以下行的所有内容 我想确保电子表格的第 415 行及其下方的任何其他内容都是干净的 我该怎么做呢 谢谢 听起来像下面的内容会满足您的需求 With Sheets Sh
  • Javers - 使用 Javers 代替 Envers 的优点是什么?

    我正在使用 Spring Data REST 开发 RESTful API 现在对于审计 Spring 确实可以选择审计元数据 例如created date and modified date但他们不提供实体版本控制 目前实体版本有两个流行
  • 向结构化numpy数组添加字段(4)

    之前已经解决过这个问题 here https stackoverflow com questions 21413947 adding a field to a structured numpy array 3 here https stac
  • 如何让用户在 Azure AD B2C 中注册后返回登录页面?

    当用户在系统中注册时 他会自动重定向到我们的应用程序作为登录用户 我希望在注册后 他会被重定向到签名页面 我想要这种行为 因为用户在访问系统之前需要得到管理员的批准 我使用自定义策略 我尝试使用 SM Noop 会话管理器 但它不起作用 有
  • 无法在 SQL 中创建程序集“System.ServiceModel.Internals”

    我正在尝试在 SQL 中创建程序集 但无法加载以下 DLL System ServiceModel Internals create assembly system servicemodel internals from C Windows
  • Boost:序列化:谁来清理反序列化的数据?

    我正在序列化对象的原始指针并将其发送到另一个应用程序 反序列化时我得到另一个原始指针 这意味着 Boost Serialization 正在内部构造此指针后面的对象 我现在很好奇谁拥有该对象的所有权 以及如果不再需要该对象 Boost 是否
  • 没有 @MapKeyColumn 或 @MapKeyTemporal 注释的时间映射键的默认 TemporalType 是什么?

    我正在为我的实习创建一个 JPA 2 0 Annotation 合规工具包 现在 我想知道什么时候需要 MapKeyTemporal 注释 什么时候它是可选的 我知道 当您使用 MapKeyColumn 定义映射键的列时 可以通过查看列的类