6

私は次のフィールドを持つMovieという名前のクラスを作成しました:

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

ご覧のとおり、私は休止状態のアノテーションを使用しており、オブジェクトはBeanです。しかし、次のコードで休止状態のセッションを開こうとすると...

session = HibernateSessionFactory.getSessionFactory().openSession();

Java.Util.Mapクラスをマップできないという問題が発生しました。例外スタックトレースは次のとおりです。

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)

私は冬眠するのが初めてで、何が起こっているのか正確にはわかりません...助けてください!

4

5 に答える 5

4

これは、jpa2の実装を使用する必要があるためです。この男は同じ問題を抱えていました

于 2010-12-02T00:33:10.803 に答える
2

私も同じ問題に直面しています。遅いですが、他の人に役立つと思います。@MapKeyColumnを使用してください。これが私の簡単なコードです。

@ElementCollection(targetClass=String.class)
@MapKeyColumn(name="Employee_Position")
private Map<String,String> position=new HashMap<String,String>();
于 2016-11-11T20:11:14.690 に答える
0

プロパティは単なるList<String>タイプではありませんか?

Hibernatesの混乱は私のものと同じように聞こえますが、なぜProperiesはリストではなくマップなのですか?あなたはそこで何をしようとしていますか?

于 2010-12-01T13:38:01.773 に答える
0

ああ、なるほど。最新のjarを使用していない限り、プリミティブをマップできるとは思いません。https://forum.hibernate.org/viewtopic.php?t=955308。そのリンクを確認してください。キーと値を使用してプロパティと呼ばれるクラスを作成し、それを使用できますか?私も同様の問題を抱えていたので、そのアプローチを使わなければなりませんでした。

于 2010-12-01T13:45:03.393 に答える
-1

プロパティのゲッターとセッターの両方がありますか?

于 2010-12-01T13:37:23.287 に答える