【发布时间】:2021-12-01 04:13:30
【问题描述】:
我有以下代码:
package com.example.demo
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
import org.springframework.data.jpa.repository.Query
import org.springframework.data.repository.CrudRepository
import org.springframework.stereotype.Repository
import org.springframework.stereotype.Service
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.PostMapping
import org.springframework.web.bind.annotation.RequestBody
import org.springframework.web.bind.annotation.RestController
import javax.persistence.Entity
import javax.persistence.Id
import javax.persistence.Table
@SpringBootApplication
class DemoApplication
fun main(args: Array<String>) {
runApplication<DemoApplication>(*args)
}
@RestController
class MessageResource(var service: MessageService) {
@GetMapping
fun index(): List<Message> = service.findMessagesInDB()
@PostMapping
fun post(@RequestBody message: Message) {
service.addMessageToDB(message)
}
}
@Service
class MessageService(val db : MessageRepository) {
fun findMessagesInDB(): List<Message> = db.findMessages()
fun addMessageToDB(message: Message){
db.save(message)
}
}
@Repository
interface MessageRepository : CrudRepository<Message, String> {
@Query("select * from messages")
fun findMessages(): List<Message>
}
@Table(name ="MESSAGES")
@Entity
data class Message(@Id val id: String?, val text: String)
我明白了
java.lang.IllegalArgumentException:查询方法 public abstract java.util.List com.example.demo.MessageRepository.findMessages() 验证失败!
我遵循了这个 kotlin-Spring 教程:https://kotlinlang.org/docs/jvm-spring-boot-restful.html#add-database-support
【问题讨论】:
-
阅读完整的错误信息,您的问题是
java.lang.IllegalArgumentException: Validation failed for query for method public abstract java.util.List com.example.demo.MessageRepository.findMessages()!。从这里开始。 -
我厌倦了该功能,但没有成功。我试图删除查询如下
@Repository interface MessageRepository : CrudRepository<Message, String> { fun findMessages() = findAll().toList() }
标签: spring-boot kotlin