2

Googleの例で行われたように、コードを作成しました。1対1の関係を作ろうとしました。しかし、エラーが発生します: AnnotationException Referenced property not a (One|Many)ToOne

質問: 何が問題なのですか?

@Entity
@Table(name = "filesInfo")
@Inheritance(strategy= InheritanceType.JOINED)
public class FileInfo {

    @Id
    @SequenceGenerator(name = "file_info_sequence", sequenceName = "sq_file_info")
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "file_info_sequence")
    @Column(name = "id")
    private long fileID;

    @JsonIgnore
    @OneToOne(mappedBy="fileInfo", cascade=CascadeType.ALL, fetch = FetchType.LAZY)
    private FileContent fileContent;

    //......
}

@Entity
@Table(name="file_content")
public class FileContent{
    @Id
    @Column(name="id", unique=true, nullable=false)
    @GeneratedValue(generator="gen")
    @GenericGenerator(name="gen", strategy="foreign", parameters=@Parameter(name="property",       value="fileInfo"))
    private long fileID;

    @JsonIgnore
    @PrimaryKeyJoinColumn
    private FileInfo fileInfo;
    //....
}

エラー: java.lang.IllegalStateException : ApplicationContext のロードに失敗しました

原因: org.springframework.beans.factory.BeanCreationException: URL で定義された名前 'sessionFactory' の Bean を作成中にエラーが発生しました [file:src/test/resources/applicationContextTest.xml]: init メソッドの呼び出しに失敗しました。ネストされた例外は org.hibernate.AnnotationException: Referenced property not a (One|Many)ToOne: FileInfo.fileContent の MappedBy の FileContent.fileInfo です

原因: org.hibernate.AnnotationException: 参照されたプロパティが (One|Many)ToOne ではありません: FileInfo.fileContent の MappedBy 内の FileContent.fileInfo

.......

4

1 に答える 1

3

答えは、 @OneToOne アノテーションを FileContent.fileInfo フィールドに追加することです。

于 2013-07-31T13:16:31.810 に答える