如何使用Spring Data JPA在实体中映射Oracle Object类型?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Spring Data JPA在实体中映射Oracle Object类型?相关的知识,希望对你有一定的参考价值。
此问题与使用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作为持久性提供程序。
This answer states, that there is no official support in JPA for Oracles Object Types, but support for it in Eclipse Link。我想这意味着Hibernate没有开箱即用的支持。
Spring Data并没有真正参与其中,因为它只是使用JPA实现将enities映射到数据库。 Spring Data提供的转换和预测仅在将输入参数/输出值传递给JPA提供程序之后/之后转换输入参数/输出值。
以上是关于如何使用Spring Data JPA在实体中映射Oracle Object类型?的主要内容,如果未能解决你的问题,请参考以下文章
在 Spring Data JPA 中,如何在运行时添加实体?
spring-data-jpa实体类继承抽象类如何映射父类的属性到数据库