相关疑难解决方法(0)

加载spring-boot和spring-data-jpa时,Hibernate无法加载JPA 2.1 Converter

我有一个UUID的自定义转换器将其转换为字符串而不是二进制文件:

package de.kaiserpfalzEdv.commons.jee.db;
import javax.persistence.AttributeConverter;
import javax.persistence.Converter;
import java.util.UUID;

@Converter(autoApply = true)
public class UUIDJPAConverter implements AttributeConverter<UUID, String> {
    @Override
    public String convertToDatabaseColumn(UUID attribute) {
        return attribute.toString();
    }

    @Override
    public UUID convertToEntityAttribute(String dbData) {
        return UUID.fromString(dbData);
    }
}
Run Code Online (Sandbox Code Playgroud)

转换器(我有一些其他特别用于时间/日期处理的)驻留在库.jar文件中.

然后我在.jar文件中有实体.像这个:

package de.kaiserpfalzEdv.office.core.security;

import de.kaiserpfalzEdv.commons.jee.db.OffsetDateTimeJPAConverter;
import de.kaiserpfalzEdv.commons.jee.db.UUIDJPAConverter;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import javax.persistence.Column;
import javax.persistence.Convert;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.time.OffsetDateTime;
import java.time.ZoneId;
import java.util.Collections; …
Run Code Online (Sandbox Code Playgroud)

java hibernate spring-data-jpa jpa-2.1 spring-boot

15
推荐指数
1
解决办法
7670
查看次数

jpa独立自定义类型映射/ javax.persistence.x替代org.hibernate.annotations.Type和org.hibernate.annotations.TypeDef

GameCycle在db中有一个表,其中包含一个date类型的列number.此列中的值是8位数字,表示反日期,如' 20130301'.映射到此表上我有一个类GameCycle,其中包含受保护的字段iDate类型java.util.Date.该字段@Type(type = "inverseDate")使用自定义类型映射进行注释.该课程Gamecycle注释为' @TypeDef(name = "inverseDate", typeClass = InverseDateType.class)'

import org.hibernate.annotations.Type;
import org.hibernate.annotations.TypeDef;

@Entity
@TypeDef(name = "inverseDate", typeClass = InverseDateType.class)
@Table(name = "GAMECYCLE")
public class GameCycle implements Comparable<GameCycle>, Serializable
{
    @Type(type = "inverseDate")
    @Column(name = "GC_DATE", nullable = false)
    protected Date iDate = null;
    ...
Run Code Online (Sandbox Code Playgroud)

显然,导入将我绑定到使用hibernate作为jpa实现,所以我的问题是:

有没有办法摆脱hibernate注释并使用纯javax.persistence解决方案进行相同的自定义类型映射?

java hibernate jpa

12
推荐指数
2
解决办法
9654
查看次数

标签 统计

hibernate ×2

java ×2

jpa ×1

jpa-2.1 ×1

spring-boot ×1

spring-data-jpa ×1