【发布时间】:2018-09-15 20:22:35
【问题描述】:
我研究了问题,但找不到合适的答案。
我试图在我的 Spring Rest 应用程序中使用带有 Spring Data JPA 的自定义查询从表中只返回某些列。但是查询在执行时总是抛出异常。
org.springframework.core.convert.ConverterNotFoundException: 找不到能够从 [java.lang.String] 类型转换为 [org.forum.api.model.Message] 类型的转换器
我知道可以使用 String,但是为什么即使我在 Spring Boot main 的子包中为它创建了模型,Message 对象也没有正确序列化为 JSON?
这是我的模型类。
@Entity
@Table(name="message")
public class Message {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "text_id")
private long id;
@NotNull
private String author;
@NotNull
private String text;
@NotNull
private String recepient;
public long getId() {return id;}
public void setId(long id) {this.id = id;}
public String getAuthor() {return author;}
public void setAuthor(String author) {this.author = author;}
public String getText() {return text;}
public void setText(String text) {this.text = text;}
public String getRecepient() {return recepient;}
public void setRecepient(String recepient) {this.recepient = recepient;}
}
这里是控制器类。
@RestController
@RequestMapping("/api")
public class MessageController {
@Autowired
private MessageService messageService;
@GetMapping("/message/{id}")
public Message getMessageTextById(@PathVariable(value="id") Long id) {
return messageService.getMessageTextById(id);
}
}
这里是服务类。
@Service
public class MessageServiceImpl implements MessageService {
@Autowired
MessageRepository messageRepo;
@Override
public Message getMessageTextById(Long id) {
return messageRepo.findMessageTextById(id);
}
}
这里是存储库类
@Repository
public interface MessageRepository extends JpaRepository<Message, Long> {
@Query("SELECT m.author, m.text FROM Message m WHERE m.id = :id")
Message findMessageTextById(@Param("id") Long id);
}
【问题讨论】:
标签: java spring-boot spring-data-jpa