【发布时间】:2016-05-26 09:07:33
【问题描述】:
我有一个表,它需要它的主键作为其他表的外键,因此是单向的一对一关系。每本书只有一个作者,如下所示:
@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
【问题讨论】:
-
一本书可以有多个作者,但这不是重点。正如错误所说,您的主键列在哪里。
-
您的意思是使用 Hibernate API 它“工作”,而使用 JPA API 它会抛出异常,因为 JPA API 坚持认为您满足某些条件。春天在这里与任何事情都有关
-
我在 Spring Data 中尝试了相同的三组双向一对一注释以获得相同的结果。作者上的单独 ID 字段和 @MapsId 不会破坏应用程序上下文的加载,但它仍然因完全不同的错误而失败。也许它对你有用。
标签: hibernate jpa spring-data spring-data-jpa