JPA - 一对一外键作为主键

3

我有一个表格,需要将其主键作为其他表格的外键,形成单向一对一关系。每本书只有一个作者,如下所示:

@Entity
public class Author {
    @Id
    String code;

    //getters and setters ...
}


@Entity
public class Book {
    @Id
    @OneToOne
    @JoinColumn(name="code", columnDefinition="DOM_COD5")
    Author author;

    //getters and setters
}

使用纯Hibernate和JPA注释可以正常工作,但是通过Spring Data使用它时,我一直收到此错误:

Caused by: java.lang.IllegalArgumentException: This class [class com.xxxx.api.catalogo.domain.Book] does not define an IdClass  

1
一本书可以有多个作者,但这不是重点。正如错误所说,你的主键列在哪里? - We are Borg
你的意思是使用 Hibernate API 可以“工作”,但使用 JPA API 会抛出异常,因为 JPA API 坚持要求满足某些特定条件。这与 Spring 没有任何关系。 - Neil Stockton
我尝试在Spring Data中使用双向一对一的方式来使用同样的注释集合,以获得相同的结果。在作者上分离ID字段和@MapsId不会导致应用程序上下文加载失败,但是对于我来说仍然会出现完全不同的错误。也许这对你有用。 - Vlasec
1个回答

2

尝试这种方法

@Entity
public class Book {

    @Id
    @OneToOne
    @PrimaryKeyJoinColumn
    Author author;

    ...
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接