休眠:使用特定字段获取结果

时间:2018-09-24 08:34:15

标签: java spring hibernate

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

我有这张桌子。

enter image description here

我想获得一个计划代码为“ TEST123”的结果列表

这是我的代码:

PlanRepository.java

public interface PlanCoverageRepository extends CrudRepository<PlanCoverage, Long> {

    List<PlanCoverage> findAllByPlan_code(String plan_code);
}

PlanCoverageService.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;
    }


}

请帮助我。我被这些问题困扰了几天,似乎没有一个教程对我有用。非常感谢!!

1 个答案:

答案 0 :(得分:0)

您搞砸了spring boot用于组成查询方法的约定。实体中字段的大小写应遵循小写驼峰格式,如下所示:

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

,然后PlanCoverageRepository中的查询方法应为:

List<PlanCoverage> findAllByPlanCode(String planCode);