Java Hibernate Mapping Exception! (Impossible de déterminer le type pour: java.util.Map)
-
29-09-2019 - |
Question
J'ai fait une classe avec le nom de film avec champs suivants:
@Id
@GeneratedValue
private Long id;
private String name;
@ElementCollection(targetClass = String.class)
private Map<String, String> properties;
private Double rate;
private Integer votersCount;
private Date releaseDate;
private Integer runtime;
@ManyToMany
@JoinTable(name = "movie_director")
@IndexColumn(name = "directorIndex")
private List<Person> directors;
@ManyToMany
@JoinTable(name = "movie_writer")
@IndexColumn(name = "writerIndex")
private List<Person> writers;
@OneToMany
@IndexColumn(name = "roleIndex")
private List<MovieRole> movieRoles;
@ManyToMany
@JoinTable(name = "movie_genre")
@IndexColumn(name = "genreIndex")
private List<Genre> genres;
comme vous pouvez le voir, je l'ai utilisé l'annotation mise en veille prolongée et de l'objet est le haricot. mais quand je tente d'ouvrir ma session de mise en veille prolongée avec le code suivant ...
session = HibernateSessionFactory.getSessionFactory().openSession();
Je rencontre un problème concernant la carte ne pouvait pas une classe Java.Util.Map. Voici trace de la pile d'exception:
org.hibernate.MappingException: Could not determine type for: java.util.Map, for columns: [org.hibernate.mapping.Column(properties)]
at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:266)
at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:253)
at org.hibernate.mapping.Property.isValid(Property.java:185)
at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:410)
at org.hibernate.mapping.RootClass.validate(RootClass.java:192)
at org.hibernate.cfg.Configuration.validate(Configuration.java:1099)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1284)
at main.HibernateSessionFactory.getSessionFactory(HibernateSessionFactory.java:29)
at main.MainClass.main(MainClass.java:26)
Je suis nouveau mise en veille prolongée et ne savent pas exactement ce qui se passe ... S'il vous plaît aidez-moi!
Autres conseils
Je sont également confrontés à la même problem.It est en retard, mais je pense que ça va aider others.use @ MapKeyColumn.here est mon code simple
@ElementCollection(targetClass=String.class)
@MapKeyColumn(name="Employee_Position")
private Map<String,String> position=new HashMap<String,String>();
ne doit pas être juste des propriétés d'un type de List<String>
?
On dirait que la confusion est la veille prolongée même que le mien qui est, pourquoi est-Properies une carte au lieu d'une liste? Que faites-vous exactement essayer de faire là-bas?
Aah je vois, son a. Je ne pense pas que vous pouvez mapper une primitive sauf si vous utilisez le dernier pot. https://forum.hibernate.org/viewtopic.php?t=955308 . Vérifiez ce lien. Pourriez-vous faire une classe appelée en tant que propriétés avec la clé et de la valeur, puis l'utiliser? J'ai eu un problème similaire et je devais utiliser cette approche.
Avez-vous des deux getter et setter pour les propriétés?