spring-data-jdbc错误找不到类的必需标识符属性

时间:2019-08-22 17:07:16

标签: java spring spring-data id spring-data-jdbc

从数据库加载数据时遇到错误

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

获得

1 个答案:

答案 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列一起构成主键。