- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在为实习创建一个 JPA 2.0 注释合规性工具包。现在,我想知道何时需要 @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 用作 map 的键时,没有默认类型。规范本身(我确实认为随规范交付的 javadoc 是规范的一部分)对 MapKeyTemporal 的使用非常严格。 MapKeyTemporal 声明的 Javadoc:
This annotation must be specified for persistent map keys of type Date and Calendar.
我认为如此严格,他们忘记了您提供的大小写,具有来自 MapKey 引用的属性的类型信息。在 MapKey 的情况下指定类型没有太大意义,因为类型已经在作为映射值的实体中指定。也不允许实体中相应字段的映射键具有不同的时间类型的可能性是不可取的。
如果未指定 MapKeyTemporal 并且没有其他方法可以确定 key 的类型,则 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)
关于java - 没有@MapKeyColumn 或@MapKeyTemporal 注释的时态 map 键的默认 TemporalType 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8971643/
我在mysql中的列类型是datetime 我使用 hibernate @Temporal(TemporalType.TIMESTAMP) 私有(private) java.sql.Timestamp
mongoDB 有类似的东西吗? @Temporal(TemporalType.TIMESTAMP) @NotNull @Temporal(TemporalType.TIMESTAMP) @DateT
您好,我想在我的 Java 类中映射一个字段 @Column(name = "date_of_birth") @Temporal(TemporalType.DATE) private Date dat
我有一个类,它有一个日期字段,表示一条数据的“有效起始”日期。它是这样定义的: @Temporal( TemporalType.DATE ) private Date validFrom; 在我从数据
我有一个类,它有一个日期字段,表示一条数据的“有效起始”日期。它是这样定义的: @Temporal( TemporalType.DATE ) private Date validFrom; 在我从数据
我有关于 @Temporal(TemporalType.DATE) 的问题。我有一个实体类,其属性如下: @Temporal(TemporalType.DATE) @Column(name =
我正在使用 Hibernate 在 Java 中为 MySQL 数据库创建一个表。 其中一列是日期类型。 @Temporal( TemporalType.TIMESTAMP ) @Column( na
如果我们想在Hibernate中存储Date,是否需要提供@Temporal? @Column(name = "Date_Open") @Temporal(TemporalType.TIMESTAMP
在我们的数据库中,我们有多个带有日期字段的实体。 Oracle 将每个日期视为相同的日期和时间部分。然而,JPA 实体通过注解 @Temporal 进行区分。当我们想省略时间部分时,我们用 @Temp
数据库中的字段为 DATETIME (mysql) 类型。 为什么生成时间戳以及是否会重新生成 在对象持久化期间?就我而言,这不是理想的情况, 看到它不是时间戳字段意味着它只能通过 setter 设置
我有一个@Entity @Entity @Table(name = "variable") @XmlRootElement public class Variable { @Id @G
我正在尝试使用java.time.LocalDateTime,但显然Hibernate 4.3.5(我正在使用JPA)不支持LocalDateTime code> 作为 TemporalType (
我正在为实习创建一个 JPA 2.0 注释合规性工具包。现在,我想知道何时需要 @MapKeyTemporal 注释以及何时它是可选的... 我知道当您使用@MapKeyColumn 定义映射键的列时
我在我的应用程序中使用 Hibernate 来存储“时间”(小时、分钟、秒)。我正在使用 Hibernate 来管理我的实体。我在我的实体中使用了 JPA 注释 @TemporalType.Time,
我在类里面有这个 @Temporal(TemporalType.TIMESTAMP) @Column(name = "data_creazione") private Date dataCreazio
我是一名优秀的程序员,十分优秀!