Speicher Ich habe eine Enumeration wie folgt definiert, wo die Werte sein sollte als -2, -1, 0, 1, 2:Frühling JPA nicht benutzerdefinierte Werte Aufzählungstyp Datenbank
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;
}
}
In meinem Modell, ich habe ein Attribut rating
genannt, wie unten dargestellt:
@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;
}
}
Dann durch eine RESTful API, sparte ich Bewertung mit dem folgenden Code:
@Service
public class FeedbackService {
@Autowired
private FeedbackRepository feedbackRepository;
public Feedback addFeedback(Feedback feedback) {
return feedbackRepository.save(feedback);
}
}
Also, wenn ich POST
eine Anfrage wie:
{
"rating": "EXTREMELY_DISSATISFIED"
}
Ich erwarte, dass der Wert -2 in der Postgres-Datenbank zu sehen. Allerdings sehe ich immer noch 0 als eine normale Enum würde mit 0 beginnen. Wie kann ich dies für die Datenbank anpassen, um die Werte wie -2, -1, 0, 1 und 2 zu speichern?
Ein JPA-Provider werden nicht alle benutzerdefinierten Enum speichern Werte, es sei denn, dieser Anbieter hat eine spezielle Handhabung dafür, und die meisten nicht. Ich weiß, dass DataNucleus einen Weg unterstützt, wie http://www.datanucleus.org:15080/products/accessplatform_5_1/jpa/mapping.html#_enums, aber hängt davon ab, welchen Provider verwenden. – DN1
Mögliches Duplikat von [Map enum in JPA mit festen Werten?] (Https://stackoverflow.com/questions/2751733/map-enum-in-jpa-with-fixed-values) –