我正在尝试运行spring引导应用程序,但我得到了以下错误:
应用程序运行失败
org.springframework.beans.factory。UnsatisfiedDependencyException:在类路径资源[muscat/configuration/RepositoryConfiguration.class]中定义名称为'returnReasonRepository'的bean创建错误:通过方法'returnReasonRepository'参数0表示不满意的依赖;嵌套异常是org.springframework.beans.factory.BeanCreationException:创建名称为'springReturnReasonRepository'的bean时出错,该bean定义在muscat.repository.SpringReturnReasonRepository中,定义在ServiceApplication上声明的@ enablejparepository中:调用init方法失败;org.springframework.data.repository.query.QueryCreationException:无法为公共抽象创建查询java.util.Optional .muscat.repository.SpringReturnReasonRepository.findByCode(java.lang.String)!java.util.Optional .muscat.repository.SpringReturnReasonRepository.findByCode(java.lang.String)!没有找到类型ReturnReason的属性代码!java.util.Optional .muscat.repository.SpringReturnReasonRepository.findByCode(java.lang.String)!没有找到类型ReturnReason的属性代码!
这是实体:
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import static javax.persistence.GenerationType.IDENTITY;
@Entity
@Data
@EqualsAndHashCode(of = "id", callSuper = false)
public class ReturnReason {
@Id
@GeneratedValue(strategy = IDENTITY)
private Long id;
@Column
private String reasonCode;
@Column
private String reasonDescription;
@Column
private String reasonType;
}
and this is the
public interface ReturnReasonRepository extends MessageRepository<ReturnReason> {
Optional<ReturnReason> findByCode(String reasonCode);
}
public class ReturnReasonRepositoryImpl implements ReturnReasonRepository {
private final SpringReturnReasonRepository springReturnReasonRepository;
public ReturnReasonRepositoryImpl(SpringReturnReasonRepository springReturnReasonRepository) {
this.springReturnReasonRepository = springReturnReasonRepository;
}
@Override
public Optional<ReturnReason> findByCode(String reasonCode) {
return springReturnReasonRepository.findByCode(reasonCode);
}
@Override
public ReturnReason save(ReturnReason returnReason) {
return springReturnReasonRepository.save(returnReason);
}
public interface SpringReturnReasonRepository extends CrudRepository<ReturnReason, Long>, JpaSpecificationExecutor<ReturnReason> {
Optional<ReturnReason> findByCode(String reasonCode);
}
@Configuration
public class RepositoryConfiguration {
@Bean
public BankInformationRepository bankInformationRepository(SpringBankInformationRepository springBankInformationRepository) {
return new BankInformationRepositoryImpl(springBankInformationRepository);
}
@Bean
public ReturnReasonRepository returnReasonRepository(SpringReturnReasonRepository springReturnReasonRepository) {
return new ReturnReasonRepositoryImpl(springReturnReasonRepository);
}
}
我的错误是什么,我如何解决它?
muscat.repository.SpringReturnReasonRepository.findByCode(java.lang.String)!没有找到类型ReturnReason的属性代码!
这是你的错误。在SpringReturnReasonRepository
中,您有findByCode
,但在ReturnReason
实体中没有名为code
的属性。如果您将此方法重命名为findByReasonCode
,它将工作。
如果您想了解更多JPA存储库方法命名约定,您可以参考此链接。