从数据库加载数据时遇到错误
java.lang.IllegalStateException: Required identifier property not found for class com.sudhirt.practice.springdatajdbcpractice.entity.AuthorRef!
at org.springframework.data.mapping.PersistentEntity.getRequiredIdProperty(PersistentEntity.java:105)
at org.springframework.data.jdbc.core.EntityRowMapper.readEntityFrom(EntityRowMapper.java:143)
at org.springframework.data.jdbc.core.EntityRowMapper.readFrom(EntityRowMapper.java:124)
at org.springframework.data.jdbc.core.EntityRowMapper.lambda$createInstance$0(EntityRowMapper.java:167)
下面是实体类AuthorRef
@Data
@Table("BOOK_AUTHOR")
@NoArgsConstructor
@AllArgsConstructor
public class AuthorRef {
private Long author;
}
上述错误的原因可能是什么?
源代码可从https://github.com/sudhirtumati/spring-data-jdbc-sample
获得答案 0 :(得分:0)
您在集合根AuthorRef
中的Set
中引用Book
。
public class Book {
@Id
private Long id;
private String name;
// ...
private Set<AuthorRef> authorRefList;
// ...
}
没有id列,Spring Data无法确定AuthorRef
的主键。
仅向@Id
添加author
注释就足够了。
或者,您可以使用List
,这将添加一个额外的book_key
列,该列与book
列一起构成主键。