首页 > 解决方案 > Hibernate:使用特定字段获取结果

问题描述

我一直在关注很多关于如何通过引用表中的特定列来获取结果列表的教程。

我有这张桌子。

在此处输入图像描述

我想用 plan_code "TEST123" 获取结果列表

这是我的代码:

计划存储库.java

public interface PlanCoverageRepository extends CrudRepository<PlanCoverage, Long> {

    List<PlanCoverage> findAllByPlan_code(String plan_code);
}

计划覆盖服务.java

public interface PlanCoverageService {
    public List<PlanCoverage> getAllPlanCoverageByPlanCode(String plan_code);
}

PlanCoverageServiceImpl.java

@Service
@Transactional
public class PlanCoverageServiceImpl implements PlanCoverageService {

    @Override
    public List<PlanCoverage> getAllPlanCoverageByPlanCode(String plan_code) {
        return (List<PlanCoverage>) planCoverageRepository.findAllByPlan_code(plan_code);
    }

}

PlanCoverageController.java

@Controller
@RequestMapping(value="/admin")
public class PlanCoverageController {

    @Autowired
    PlanCoverageService planCoverageService;

    @RequestMapping(value="/Test/{plan_code}", method=RequestMethod.GET)
    public ModelAndView test(@PathVariable String plan_code) {
        ModelAndView model = new ModelAndView();
        PlanCoverage planCoverage = (PlanCoverage) planCoverageService.getAllPlanCoverageByPlanCode(plan_code);
        model.addObject("planCoverageForm",planCoverage);
        model.setViewName("plan_coverage_form");
        return model;
    }   
}

PlanCoverage.java

@Entity
@Table(name="plan_coverage")
public class PlanCoverage {

    @Id
    @GeneratedValue(strategy= GenerationType.IDENTITY)
    private long coverage_id;

    @Column(name="plan_code")
    private String plan_code;

    @Column(name="coverage_description")
    private String coverage_description;

    /..getters and setters

    @ManyToOne()
    @JoinColumn(name="plan_code", referencedColumnName = "plan_code",insertable=false, updatable=false)
    private Plan plan;

    public Plan getPlan() {
        return plan;
    }

    public void setPlan(Plan plan) {
        this.plan = plan;
    }


}

请帮我。我已经被这些困住了几天,而且似乎没有任何教程对我有用。太感谢了!!

标签: javaspringhibernate

解决方案


您已经搞乱了 Spring Boot 用于编写查询方法的约定。实体中字段的大小写应遵循较低的驼峰式方案,如下所示:

@Column(name="plan_code")
private String planCode;

然后查询方法PlanCoverageRepository应该是:

List<PlanCoverage> findAllByPlanCode(String planCode);

推荐阅读