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

问题描述 投票:1回答:1

此问题与使用Spring Data JPA在实体中映射Oracle对象类型特别相关。 other question没有帮助详细解释这个问题。

所以下面是详细信息:

我无法在Spring Data JPA Reference和任何其他搜索结果中找到与使用Spring Data JPA映射实体对象中的Oracle对象类型相关的信息。

场景:

假设我有以下date_typ Oracle类型。

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;

现在在oracle数据库表中,比如REGISTRATION,其中一列是上面的date_typ

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 ???
}

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

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

hibernate spring-data spring-data-jpa oracle-objects
1个回答
1
投票

This answer states, that there is no official support in JPA for Oracles Object Types, but support for it in Eclipse Link。我想这意味着Hibernate没有开箱即用的支持。

But this blog post describes how to implement a UserType to map a Java class to an Oracle Object type

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

© www.soinside.com 2019 - 2024. All rights reserved.