2017-05-31 246 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/ - 這有助於更好地理解這個概念。無論如何,我接受你的答案。 –