【发布时间】:2020-10-31 08:39:22
【问题描述】:
我有一个非常简单的 Spring Boot MVC 项目,我尝试使用 DomainClassConverter 直接加载实体。但似乎找不到 DomainClassConverter。访问 'localhost:8080/one/2' url 时出现以下错误:
无法将类型“java.lang.String”的值转换为所需类型“com.example.test.data.Customer”:找不到匹配的编辑器或转换策略
但 DomainClassConverter 应该由 Spring Boot 启用并管理转换。
我也尝试通过 @EnableSpringDataWebSupport 注释明确启用它,但它也没有工作。
这是我的控制器代码:
@Controller
public class TestController {
@Autowired
private CustomerRepository customerRepository;
@GetMapping("/all")
public void all(Model model) {
Iterable<Customer> customers=customerRepository.findAll();
model.addAttribute("customers",customers);
};
@GetMapping("/one/{customer_id}")
public void one(@PathVariable("customer_id") Customer customer, Model model) {
model.addAttribute("customer",customer);
};
}
客户代码:
@Entity
public class Customer {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Getter
private Long id;
@Getter
@Setter
private String firstName;
@Getter
@Setter
private String lastName;
protected Customer() {
}
public Customer(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
}
CustomerREpositoy:
public interface CustomerRepository extends PagingAndSortingRepository<Customer, Long> {
List<Customer> findByLastName(String lastName);
Customer findById(long id);
}
应用程序:
@SpringBootApplication
public class TestApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class);
}
}
最后是 build.graddle:
plugins {
id 'org.springframework.boot' version '2.3.1.RELEASE'
id 'io.spring.dependency-management' version '1.0.9.RELEASE'
id 'java'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '14'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
// implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'org.postgresql:postgresql'
annotationProcessor 'org.projectlombok:lombok'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
// testImplementation 'org.springframework.security:spring-security-test'
}
test {
useJUnitPlatform()
}
有什么想法吗?
【问题讨论】:
-
这似乎是 spring data commons 2.3 中的一个已知错误,请参阅jira.spring.io/browse/DATACMNS-1759。我在我的项目中遇到了同样的问题,在修复该错误之前,我将 org.springframework.data.repository.support.DomainClassConverter 替换为 2.2.x 的版本,到目前为止它似乎对我有用。
标签: java spring spring-boot spring-mvc spring-data