JPA使用包装类映射用户类型

时间:2014-12-07 17:23:18

标签: java hibernate jpa jpa-2.0

如何映射和更改实际包装类的字段。

private UserId uid = new UserId();

其中UserId是包含在许多类中的。它将字符串作为Id ,但其在数据库中的等效字段为

当我注释它时,JPA会抱怨字段的类型和可访问性。

我需要告诉JPA 使用注释

  1. 如何访问最终将映射的实际字段

  2. 显然它不知道如何将它从字符串转换为long,怎么做?

  3. 我是JPA和Java的新手,并且在字段上使用注释。

    由于

    这是代码

    UserId.java

    public class UserId extends CustomString {
    public UserId(String value) {
        super(value);
    }
    

    CustomString.java

    public abstract class CustomString extends ParentDomain {
    
    private String value;
    
    public CustomString(String value) {
        if (value == null) {
            throw new NullStringException(this.getClass().getName());
        }
        this.value = value;
    }
    //Getters and Setters
    @Override
    public String toString() {
        return this.value;
    }
    

    }

    ParentDomain.java

    public abstract class ParentDomain {
    // nothing
    

    }

    到目前为止我做了什么

    我在从Long转换为字符串之后创建了具有Long返回类型的getter setter我返回了值。

1 个答案:

答案 0 :(得分:0)

您可以编写一个Hibernate UserType来获取UserId对象并将其映射到LONG列。