Frage

Ich habe eine Klasse mit dem Namen von Film mit folgenden Feldern aus:

    @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;

Wie Sie sehen können, habe ich verwendet Hibernate Annotations und Objekt-Bean. aber wenn ich versuche, meine Hibernate-Sitzung mit dem folgenden Code ...

zu öffnen
session = HibernateSessionFactory.getSessionFactory().openSession();

ich auf ein Problem stoßen keine Java.Util.Map Klasse Karte in Bezug auf könnte. Hier ist Ausnahme-Stack-Trace:

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)

Ich bin neu zu überwintern und wissen nicht genau, was passiert ... Bitte helfen Sie mir!

War es hilfreich?

Lösung

Das ist, weil Sie einige jpa2 Implementierung verwenden! dieser Typ hatte die gleiches Problem

Andere Tipps

ich auch vor der gleiche problem.It spät ist, aber ich denke, es wird helfen others.use @ MapKeyColumn.here mein einfacher Code ist

@ElementCollection(targetClass=String.class)
@MapKeyColumn(name="Employee_Position")
private Map<String,String> position=new HashMap<String,String>();

Should nicht Eigenschaften nur List<String> Typ sein?

Es klingt wie überwintert Verwirrung ist das gleiche wie meiner, das ist, warum ist properies eine Karte anstelle eine Liste? Was genau sind Sie versuchen, es zu tun?

Aah Ich sehe, es ist ein. Ich denke nicht, daß Sie können eine primitive Karte, wenn Sie letzte Glas verwenden. https://forum.hibernate.org/viewtopic.php?t=955308 . Überprüfen Sie diesen Link. Könnten Sie eine Klasse machen als Eigenschaften mit Schlüssel und Wert bezeichnet und verwenden Sie es dann? Ich hatte ein ähnliches Problem, und ich hatte diesen Ansatz zu verwenden.

Haben Sie beide Getter und Setter für Eigenschaften?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top