Voila, dans un projet que nous faisons, nous avons des objets (entites) pouvant avoir plusieurs états. La solutions sur papier était donc simple; une liste d'enum...
Mais apparement les annotations que nous avons utilisés ne fonctionnent pas... les voici

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
@Entity
@Table(name = "MON_OBJ", schema = "PROJET")
public class MyObj extends Entite implements Serializable {
 
(...)
 
	@OneToMany
	@JoinTable(name="MON_OBJ_ENUM_ETATS_OBJETS",
			joinColumns={@JoinColumn(name="MON_OBJ_ID")},
			inverseJoinColumns={@JoinColumn(name="ENUM_ETATS_OBJETS_ID")}
	)
	@Enumerated(EnumType.ORDINAL)
	private List<EnumEtatsObjets> listStatutsObj;

et voici le contenu de EnumEtatsObjets

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
@Embeddable
public enum EnumEtatsObjets {
	OK,
	KO,
	NEW,
	TEMP,
	OLD,
	CLEAN,
	DERTY;
}
l'erreur en question est:
org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: domaine.MyObj.listStatutsObj[domaine.EnumEtatsObjets]



Dans les solutions alternatives on pensait ne plus mettre un enum, mais un veritable objet et le gérer comme une OneToMany classique. Le problème est que l'on risque d'avoir énormément d'objets "etats" donc nous recherchons un moyen de limiter le nombre d'objets Etats. Par exemple de faire un objet etat "dead" qui contiendra une liste des objets étant dans cet état. (Comme ça, si il y a 50 objets qui sont "dead" il n'y aura pas 50 objet états de créés, mais un seul qui contiendra une liste de tout les objets ayant cet état (une map par exemple) )


auriez vous une idée? merci d'avance!