0

我想将以下实体映射转换为Priority对象。在吸气剂上,当我将“Short”更改为“Priority”并遵循套件时,this.priority它会抱怨'basic' attribute type should not be priority. 我怎样才能将其设置/获取为优先级?

@Column(name = "priority", nullable = false, insertable = true, updatable = true, length = 5, precision = 0)
public Short getPriority() {
    return priority;
}

public void setPriority(Short priority) {
    this.priority = priority;
}

我的优先级:

public class Priority {
    public static final Priority TOP = new Priority("TOP", 100);

    public static final Priority PRIORITY_REMAN = new Priority("PRIORITY_REMAN", 250);

    public static final Priority PRIORITY = new Priority("PRIORITY", 500);

    public static final Priority STANDARD_REMAN = new Priority("STANDARD_REMAN", 750);

    public static final Priority STANDARD = new Priority("STANDARD", 1000);

    private final String name;
    private final Integer value;

    public Priority() {
        this.name = null;
        this.value = 0;
    }

    protected Priority(String name, int value) {
        this.name = name;
        this.value = value;
    }

    public String getName() {
        return name;
    }

    @JsonView({Views.ShutdownView.class})
    public Integer getValue() {
        return value;
    }

    public String toString() {
        return getName();
    }
}
4

2 回答 2

1

您可以将您的Priority课程更改为Enum,也可以将您的getPriority方法更改为以下内容:

@Enumerated
@Column(name = "priority", nullable = false, insertable = true, updatable = true, length = 5, precision = 0)
public PriorityEnum getPriority() {
    return priority;
}

这样,hibernate 将尝试将Priority数据库中的属性保存为一个数字,表示定义中给定值的顺序Enumeration。因此,如果priority属性的值为 TOP,则数据库中对应的值为1,如果是 ,则PRIORITY_REMAN数据库中的值为2以此类推。

为了更改此行为,您可以将@Enumerated注释更改为

@Enumerated(EnumType.STRING)

在这种情况下,数据库中的对应列应该是某种String(如VARCHARor NVARCHAR),因为 hibernate 会尝试将TOPor的字符串值保存PRIORITY_REMAN在数据库中。

于 2013-09-20T20:03:44.547 回答
0

你不能,Short 是一个最终类,所以你不能扩展它。

我建议你做的是创建另一个你需要的吸气剂,比如:

public Priority getJsonPriority() {
    return new Priority(this.priority);
}

或将 Priority.class 设为 Persistent Entity,并为其添加 OneToOne 关系,这对您来说不是最佳解决方案..

于 2013-09-20T20:02:18.703 回答