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

如何使用Spring Data JPA在实体中映射Oracle对象类型?

祁嘉瑞
2023-03-14
CREATE TYPE date_typ AS OBJECT (
  month         VARCHAR2(2),
  day           VARCHAR2(2),
  year          VARCHAR2(4),
  extension     VARCHAR2(10),
  MEMBER FUNCTION getFullDate RETURN VARCHAR2
);

CREATE TYPE BODY date_typ AS
  MAP MEMBER FUNCTION getFullDate RETURN VARCHAR2 AS
  BEGIN
    return month || day || year;
 END getFullDate;
END;
Column      Type
REG_ID      VARCHAR2(25)  primary key
FIRSTNAME   VARCHAR2(30)  not null
LASTNAME    VARCHAR2(30)  not null
MIDDLEINIT  VARCHAR2(10) 
REQUESTEDDATE DATE_TYP
...
...
@Entity
@Table(name = "REGISTRATION", schema = "accounts")
public class RegistrationEntity {
    @Id
    @Column(name = "REG_ID")
    private String registrationId;

    @Column(name = "FIRSTNAME", nullable = false)
    private String firstName;

    @Column(name = "LASTNAME", nullable = false)
    private String lastName;

    @Column(name = "MIDDLEINIT")
    private String middleInitial;

    requestedDate ???
}

如何将requesteddate映射到Spring JPA中DATE_TYP(oracle对象类型)的requesteddate列?

注意:我使用Hibernate作为持久性提供程序。

共有1个答案

太叔炎彬
2023-03-14

这个答案表明,JPA中没有对Oracles对象类型的官方支持,但在Eclipse Link中支持它。我想这意味着Hibernate对此没有开箱即用的支持。

但是这篇博文描述了如何实现usertype来将Java类映射到Oracle对象类型。

Spring Data并没有真正参与其中,因为它只是使用JPA实现将enities映射到数据库。Spring Data提供的转换和预测只在将输入参数/输出值传递给JPA提供者之前/之后转换它们。

 类似资料:
  • 我有这样一个实体对象: 现在我有一张这样的地图:

  • 我正在使用下面的代码片段映射对象 它没有映射,但当我添加这个时,它工作得很好 但却无法理解它的功能<代码>导入={Instant.class,DateTimeFormatter.class}它如何帮助映射对象?

  • 问题内容: 我正在尝试设计一个非常简单的应用程序,并使自己与Hibernate的实体和值对象的定义(在Java Persistence with Hibernate的第4章中定义)有些困惑。 我所拥有的是带有客户的应用程序,可以下订单(一对多关系)。这些订单中的每一个都有许多订单行(也是一对多)。现在,我认为客户具有身份(客户编号),订单(订单编号)也是如此,因此它们是实体对象吗?我的困惑来自订单

  • 我正在尝试使用ModelMapper映射对象树。 我创建了一个例子来说明我的问题: 类包含多个属性 类包含类型为Sub的对象和(至少)另一个属性 类目标包含一个简单的属性列表 源属性和目标属性的类型不同 代码: 我正在寻找一种配置单个ModelMapper实例的方法,以便满足以下约束: modelMapper能够将Sub类型的对象转换为目标对象 不幸的是,行<代码>映射(source.sub,de

  • 问题内容: 我收到消息“文字与格式字符串不匹配”。 例如,以下是Java类中的一些方法: 这是该类的Hibernate配置文件中的映射: 这是该列的DDL: 我尝试在hibernate配置中将type =“ date”和“ timestamp”(不是同时)设置为attr,然后将Java类型从String更改为Date,但这给了我一个不同的错误。我读了一些有关绑定参数的内容,但是无法做到这一点。 当

  • 问题内容: 我将开始一个使用Spring和Hibernate管理的REST应用程序项目。 我知道Spring允许您从HTTP Request(带有注释)中获取Java对象。如果此Java对象也是Hibernate实体,是否有冲突?嵌套对象是否起作用(如关系)? 问题答案: 我们正在使用这种方法来简化设计并摆脱许多dto(我们滥用它们太多了)。基本上,它对我们有用。 但是,在我们的REST模型中,我