【发布时间】:2017-05-23 09:01:33
【问题描述】:
我有一个 Databaseintem,我有一个字符串作为 Id。我创建了一个 ItemRepository 并声明了 findById,该条目在数据库中,但 findById 为空。
导入 org.springframework.data.repository.CrudRepository; 导入 org.springframework.transaction.annotation.Transactional;
存储库:
@Transactional
public interface ItemRepository extends CrudRepository<Item, String> {
public Item findById(String id);
}
项目:
@Entity
public class Item{
private String id;
private String idTrans;
private String name;
private Date created;
private Date modified;
@Id
public String getId() {
return id;
}
----
我有一个与存储库交互的 ItemService,我从 ItemController 实现了一个 rest api,获取。
项目控制器:
@Controller
@RequestMapping(value = "/item")
public class ItemController {
@RequestMapping( value = "/{id}", method = RequestMethod.GET )
@ResponseStatus( HttpStatus.OK )
@ResponseBody
public String getItem( @PathVariable( "id" ) String id){
Preconditions.checkNotNull( id );
logger.info("1. getAAA " + id); // prints
Item a = itemService.getItem( id );
logger.info("2. getAAA " + a);
return "a : ";// + a.getName();
}
数据库中的条目"
| token1495528421393 | 2017-05-23 11:33:41 | Itemnull | 0 | | 0 | 0 | 2017-05-23 11:33:41 |Item1
请求 GET:
curl -H "Content-Type: application/json" -X GET http://localhost:8090/item/token1495528421393
- 在 findById 上的项目为空
【问题讨论】:
-
我想你的 id 是按 logger.info 的预期打印的?顺便说一句,@PathVariable 名称不应该是“assessment_id”吗?
-
给定字符串“id”的
@PathVariable不应该是“assessment_id”吗?看看Spring MVC ... @Zeromus 更快 -
你有一个 Item 对象的存储库,它与 Assessment 对象有什么关系?
-
对不起,是 Item 对象,我已经更新了!
-
去掉
findById方法,使用默认的findOne方法(假设你的id字段被@Id注解)。
标签: java mysql spring hibernate