【发布时间】:2018-04-22 05:53:46
【问题描述】:
我有一个如下定义的枚举,其中值应该是 -2、-1、0、1、2:
public enum Rating {
EXTREMELY_DISSATISIFIED(-2),
DISSATISFIED(-1),
NEUTRAL(0),
SATISFIED(1),
EXTREMELY_DISSATIFIED(2);
private final int rating;
Rating(int rating) {
this.rating = rating;
}
public int getValue() {
return rating;
}
}
在我的模型中,我有一个名为rating 的属性,如下所示:
@Entity
public class Feedback {
@Column(nullable=false)
private Rating rating;
public Feedback() {}
public Rating getRating() {
return rating;
}
public void setRating(Rating rating) {
this.rating = rating;
}
}
然后,通过 RESTful API,我使用以下代码保存评分:
@Service
public class FeedbackService {
@Autowired
private FeedbackRepository feedbackRepository;
public Feedback addFeedback(Feedback feedback) {
return feedbackRepository.save(feedback);
}
}
所以,当我POST 一个请求时:
{
"rating": "EXTREMELY_DISSATISFIED"
}
我希望在 POSTgres 数据库中看到值 -2。但是,我仍然看到 0,因为普通枚举会以 0 开头。如何调整数据库以将值存储为 -2、-1、0、1 和 2?
【问题讨论】:
-
JPA 提供者不会保存任何自定义枚举值,除非该提供者对其进行了一些特殊处理,而且大多数都没有。我知道 DataNucleus 支持一种方式,根据 datanucleus.org:15080/products/accessplatform_5_1/jpa/… ,但取决于使用的是哪个提供者。
标签: java spring postgresql jpa enums