JPA中的方法-存储库

时间:2018-12-11 13:01:02

标签: java spring-data-jpa repository

我在ProjectVariantRepository中有一个方法,该方法返回基于id的项目变体。我的问题是我什么时候做

ProjectVariant projectVariant = projectVariantService.findProjectVariantById(projectVariantId);
        System.out.println("Project Variant: " + projectVariant);

我的项目Variant为null,但是在数据库中,我有一个projectVariantId = 1;

@Repository
public interface ProjectVariantRepository extends JpaRepository<ProjectVariant, Integer> {
    public ProjectVariant findByProjectVariantId(int projectVariantId);

服务界面

  public interface  ProjectVariantService {
    ProjectVariant findProjectVariantById(int projectVariantId);

服务实施

@Service
public class ProjectVariantServiceImpl implements ProjectVariantService {

    @Autowired
    private final ProjectVariantRepository projectVariantRepository;


    public ProjectVariantServiceImpl(ProjectVariantRepository projectVariantRepository) {
        this.projectVariantRepository = projectVariantRepository;

    }

    @Override
    public ProjectVariant findProjectVariantById(int projectVariantId) {
        return projectVariantRepository.findByProjectVariantId(projectVariantId);
    }
  }

我不明白自己做错了什么。

2 个答案:

答案 0 :(得分:0)

您可以使用Jpa Repository提供的T getOne(ID id);,它返回对具有给定标识符的实体的引用;

因此在您的服务中,您可以使用此功能:

@Override
public ProjectVariant findProjectVariantById(int projectVariantId) {
    return projectVariantRepository.getOne(projectVariantId);
}

答案 1 :(得分:0)

实体类中的属性名称如何? id或projectVariantId?如果是Id,则应创建如下方法:

@存储库 公共接口ProjectVariantRepository扩展了JpaRepository {     公共ProjectVariant findById(int projectVariantId);