1

この3つのクラスをマップしようとしました:

@Entity
class Photo {
...
@ManyToOne
private Map<User, Coordinate> labelledIn;
...
}

@Entity
class User {
...
@OneToMany (mappedBy ="labelledIn") 
private Set<Photo> labelledPhotos;
...
}

@Embedded 
class Coordinate { ... }

そして、私はこのエラーが発生しています:

Caused by: org.hibernate.AnnotationException: @OneToOne or @ManyToOne on com.redex.model.Photo.labelledIn references an unknown entity: java.util.Map

この修飾された関連付けをデータベースにマップできますか? できない場合、どうすれば別の方法でこれを行うことができますか?

4

2 に答える 2

2

使用する

@OneToMany
private Map<User, Coordinate> labelledIn;

代わりに@ManyToOne。@JB Nizet が言ったように、コレクションに対して多対 1 の関係を持つことに意味はありません。

詳細については、2.2.5.3.4 を参照してください。インデックス付きコレクション (リスト、マップ)

于 2012-06-13T09:52:14.417 に答える
0

このような関係は、他の JPA エンティティーのみを参照できます。と が必要な場合は、次のようなことを試す必要がありますone user -> many photosone photo -> one user

class User {
    @OneToMany
    private Set<Photo> photos;
}

class Photo {
    @ManyToOne
    private User user;
}
于 2012-06-13T09:50:48.997 に答える