jpa 中的方法 - 存储库

Method in jpa - repository

我在 ProjectVariantRepository 中有一个方法 returns 基于 id 的项目变体。我的问题是当我

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

我的项目 Variant 为空,但在数据库中我有一个 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);
    }
  }

我不明白我做错了什么..

您可以使用 Jpa 存储库提供的 T getOne(ID id); returns 对具有给定标识符的实体的引用;

所以在你的服务中你可以使用这个:

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

实体 class 中的 属性 名称如何? Id 或 projectVariantId?如果它是 Id,你应该创建你的方法:

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