2017-05-31 245 views
1

这个问题特别涉及到使用Spring Data JPA在实体中映射Oracle对象类型。 other question没有帮助详细解释问题。如何使用Spring Data JPA在实体中映射Oracle对象类型?

因此,这里有以下细节:

我无法找到实体有关映射的Oracle对象类型信息与Spring JPA的数据无论是在春季数据JPA参考,也没有在其他任何搜索结果的对象。

场景:

比方说,我有以下date_typ甲骨文类型。

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数据库中的表

现在,假设注册,其中一列是上述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 J中,如何将requestedDate映射到DATE_TYP(oracle对象类型)的REQUESTEDDATE列PA?

注:我使用Hibernate作为持久性提供者。

+0

[Java中的Oracle数据库对象类型导入]的可能重复(https://stackoverflow.com/questions/14600155/oracle-database-object-type-import-in-java) – danihp

回答

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数据并没有真正涉及到这个,因为它只是使用JPA实现将enities映射到数据库。 Spring Data提供的转换和投影仅在将输入参数/输出值传递给JPA提供者或从JPA提供者获取它们之后才转换。

+0

谢谢仁。你的回答有助于理解问题和解决方案。为实现UserType而提供的链接在一定程度上有所帮助。我偶然发现了这个链接:http://blog.xebia.com/understanding-and-writing-hibernate-user-types/ - 这有助于更好地理解这个概念。无论如何,我接受你的答案。 –