salut tout le monde
je suis en train de devenir dingue à cause d'une ENUM que j'ai dans Postgres que j'essaie de mapper sur une ENUM Java
Quand je fais un select dans la table, mon entité récupère bien l'élément de l'énumération mais quand j'essaie de persister Postgres retourne une erreur
J'utilise JPA en passant par EclipseLink et pour tout un tas de raisons je ne souhaite pas retourner vers HibernateERREUR: l'opérateur n'existe pas : cb_def.study_status = character varying
j'ai bien essayé cette méthode mais ça ne fonctionne pas mieux
quelqu'un aurait une idée ?
voici mon entité :
mon énumération Java :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68 import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.EnumType; import javax.persistence.Enumerated; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.SequenceGenerator; import javax.persistence.Table; import com.persistence.def.StudyStatus; /** * Entité faisant le lien avec la table cb_id.study de la base de données centrale. * */ @Entity @Table(name="cb_id.study") public class Study implements Serializable { private static final long serialVersionUID = 1L; private Integer pk = null; private String name = null; private StudyStatus currentStatus = null; @Id @GeneratedValue( strategy=GenerationType.SEQUENCE, generator="cb_id.study_study_pk_seq" ) @SequenceGenerator( name="cb_id.study_study_pk_seq", sequenceName="cb_id.study_study_pk_seq", allocationSize=1 ) @Column(name="study_pk") public Integer getPk() { return pk; } public void setPk(Integer pk) { this.pk = pk; } @Column(name="study_name") public String getName() { return name; } public void setName(String name) { this.name = name; } @Column(name="current_study_status") @Enumerated(EnumType.STRING) public StudyStatus getCurrentStatus() { return currentStatus; } public void setCurrentStatus(StudyStatus status) { this.currentStatus = status; } public Study(Integer pk, String name, StudyStatus status) { this.pk = pk; this.name = name; this.currentStatus = status; } public Study() { } @Override public String toString() { return "("+pk+", "+name+", "+currentStatus.toString()+")"; } }
mon code SQL :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 /** * Enumération des défintions contenues dans l'énumération cb_def.study_status de la base de * données centrale. * */ public enum StudyStatus { ongoing, locked; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 CREATE TYPE cb_def.study_status AS ENUM ( 'ongoing', 'locked' ); CREATE TABLE cb_id.study ( study_pk SERIAL, study_name VARCHAR(255) NOT NULL, current_study_status cb_def.study_status NOT NULL, PRIMARY KEY(study_pk), UNIQUE(study_name) );
Partager