spring boot jpa repository接口总是返回null

时间:2017-06-19 09:04:18

标签: java jpa spring-boot repository

这个我的代码在我的控制器下面,即使我传递了一个有效的密钥,我总是得到null。有人告诉我为什么会发生这种情况。下面是我的存储库,控制器和域类

$ cat schrodingers_dict.py
from collections import MutableMapping
cats = []

class SchrodingersDict(MutableMapping):

    def __init__(self, data):
        self._store = dict(data)

    def __getitem__(self, key):
        if key == 'dead' or key == 'alive':
            self._store[key] = cats.count(key)
        return self._store[key]

    def __setitem__(self, key, value):
        self._store[key] = value

    def __delitem__(self, key):
        del self._store[key]

    def __iter__(self):
        return iter(self._store)

    def __len__(self):
        return len(self._store)

    def __repr__(self):
        return repr(dict(self.items()))


box = SchrodingersDict([('dead', 0), ('alive', 0)])
cats.append('dead')
cats.append('dead')
cats.append('alive')

$ python3 -i schrodinger_dict.py
>>> box
{'dead': 2, 'alive': 1}

映射:

public interface AbcRepository extends JpaRepository<ForgotPasswordToken, int> {
    Abc findByHashKey(String hashKey);
    Abc findByUser(User user);
}

实体:

@RequestMapping(value = "/validateKey/{hashKey}", method = RequestMethod.GET)
public ResponseEntity validateKey(@PathVariable String hashKey) {
    Abc abc = AbcRepository.findByHashKey(hashKey);
    if (abc == null) {
        return ResponseEntity.badRequest().body("Invalid key");
    }
    return ResponseEntity.ok().body(abc.getUser());
}

1 个答案:

答案 0 :(得分:1)

存储库和ABC类中有不同类型的主键。

你应该改变

JpaRepository<ForgotPasswordToken, int> 

JpaRepository<ForgotPasswordToken, Long>

在ABC课程中使用Long id

private Long id;

建议使用对象类型作为JPA @Id而不是基元。因此,将long更改为Long

请参阅Primitive or wrapper for hibernate primary keys