Java Spring Boot JPA@Query问题如何修复

Java Spring Boot JPA@Query问题如何修复,java,spring,spring-boot,hibernate,jpa,Java,Spring,Spring Boot,Hibernate,Jpa,我需要一些帮助。我正在使用JPA编写web应用程序。我通过YouTube和其他网页上的教程来实现这一点。 我赚了很多,但我需要帮助从我的申请中看到一件事。 我有客户,也有预约日期,因为这是一份美容院的申请 这就是我在InteliJ中的应用 我想显示名为“Patryk”的客户机 下面是model.klienci中的代码 package figura.zaklad_fryzjerski_v3.model; import javax.persistence.*; @Entity @Table(n

我需要一些帮助。我正在使用JPA编写web应用程序。我通过YouTube和其他网页上的教程来实现这一点。 我赚了很多,但我需要帮助从我的申请中看到一件事。 我有客户,也有预约日期,因为这是一份美容院的申请

这就是我在InteliJ中的应用 我想显示名为“Patryk”的客户机

下面是model.klienci中的代码

package figura.zaklad_fryzjerski_v3.model;


import javax.persistence.*;

@Entity
@Table(name = "klienci")
public class Klienci {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id_klienta")
    private Integer id_klienta;

    @Column(name = "imie")
    private String imieKlienta;

    @Column(name = "nazwisko")
    private String nazwiskoKlienta;

    @Column(name = "nr_telefonu_klienta")
    private Integer nrTelefonuKlienta;

    @Column(name = "adres_email")
    private  String adresEmailKlienta;
    getters and setters
下面是repository.kliencirespository中的代码

package figura.zaklad_fryzjerski_v3.repository;

import figura.zaklad_fryzjerski_v3.model.Klienci;
import org.springframework.data.jpa.repository.JpaRepository;

import org.springframework.stereotype.Repository;



@Repository
public interface KlienciRepository extends JpaRepository<Klienci, Integer> {

}
包figura.zaklad_fryzjerski_v3.repository;
导入figura.zaklad_fryzjerski_v3.model.Klienci;
导入org.springframework.data.jpa.repository.JpaRepository;
导入org.springframework.stereotype.Repository;
@存储库
公共接口klienciredepository扩展了JpaRepository{
}
下面是service.klienceservice的代码

package figura.zaklad_fryzjerski_v3.service.klienci;

import figura.zaklad_fryzjerski_v3.model.Klienci;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.repository.Query;


import java.util.List;

public interface KlienciService {

    List<Klienci> getAllKlieci();
    void saveKlienci(Klienci klienci);
    Klienci getKlienciById(Integer id_klienta);
    void usunKlientaById(Integer id_klienta);
    Page<Klienci> findPaginated(int pageNo, int pageSize);
}
包figura.zaklad_fryzjerski_v3.service.klienci;
导入figura.zaklad_fryzjerski_v3.model.Klienci;
导入org.springframework.data.domain.Page;
导入org.springframework.data.domain.Sort;
导入org.springframework.data.jpa.repository.Query;
导入java.util.List;
公共接口设备{
列出getAllKlieci();
void saveKlienci(Klienci Klienci);
Klienci getKlienciById(整数id_klienta);
void usunKlientaById(整数id_klienta);
已分页(int pageNo、int pageSize);
}
下面是service.klienceserviceimpl中的代码

package figura.zaklad_fryzjerski_v3.service.klienci;

    import figura.zaklad_fryzjerski_v3.model.Klienci;
    import figura.zaklad_fryzjerski_v3.repository.KlienciRepository;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.data.domain.Page;
    import org.springframework.data.domain.PageRequest;
    import org.springframework.data.domain.Pageable;
    import org.springframework.stereotype.Service;

    import java.util.List;
import java.util.Optional;

@Service
//@Transactional
public class KlienciServiceImpl implements KlienciService{

    @Autowired
    private KlienciRepository klienciRepository;

    @Override
    public List<Klienci> getAllKlieci() {
        return klienciRepository.findAll();
    }

    @Override
    public void saveKlienci(Klienci klienci){
        this.klienciRepository.save(klienci);
    }

    @Override
    public Klienci getKlienciById(Integer id_klienta) {
        Optional<Klienci> optional = klienciRepository.findById(id_klienta);
        Klienci klienci = null;
        if(optional.isPresent()){
            klienci = optional.get();
        }else{
            throw new RuntimeException("Klient nie znaleziony po id :: "+ id_klienta);
        }
        return klienci;
    }

    @Override
    public void usunKlientaById(Integer id_klienta){
        this.klienciRepository.deleteById(id_klienta);
    }

    @Override
    public Page<Klienci> findPaginated(int pageNo, int pageSize) {

        Pageable pageable = PageRequest.of(pageNo - 1,pageSize);
        return this.klienciRepository.findAll(pageable);
    }
}
包figura.zaklad_fryzjerski_v3.service.klienci;
导入figura.zaklad_fryzjerski_v3.model.Klienci;
导入figura.zaklad_fryzjerski_v3.repository.kliencirespository;
导入org.springframework.beans.factory.annotation.Autowired;
导入org.springframework.data.domain.Page;
导入org.springframework.data.domain.PageRequest;
导入org.springframework.data.domain.Pageable;
导入org.springframework.stereotype.Service;
导入java.util.List;
导入java.util.Optional;
@服务
//@交易的
公共类KlienceIServiceImpl实现KlienceIService{
@自动连线
私人KlienciRepository KlienciRepository;
@凌驾
公共列表getAllKlieci(){
return klienciresposition.findAll();
}
@凌驾
公共无效保存(Klienci Klienci){
这个.klienciresposition.save(klienci);
}
@凌驾
public Klienci getKlienciById(整数id_klienta){
可选=klienciRepository.findById(id_klienta);
Klienci-Klienci=null;
if(可选的.isPresent()){
klienci=optional.get();
}否则{
抛出新的运行时异常(“Klient nie znaleziony po id::”+idu klienta);
}
返回克利恩西;
}
@凌驾
public void usunKlientaById(整数id_klienta){
this.klienciresposition.deleteById(id_klienta);
}
@凌驾
已查找到的公共页面(int pageNo,int pageSize){
Pageable Pageable=PageRequest.of(pageNo-1,pageSize);
返回此.klienciRepository.findAll(可分页);
}
}
在这里我还包括了一个控制器,我用它来显示我应用程序页面上的内容

 //klient wyświetlanie listy klientów
    @Autowired
    public KlienciService klienciService;
    @GetMapping("/klient_baza")
    public String getKlient_baza(Model model){
        model.addAttribute("listaKlientow",klienciService.getAllKlieci());
        return findPaginated(1, model);
    }

    //Dodawanie klientów do bazy danych
    @GetMapping("/klient_dodaj")
    public String getKlient_dodaj(Model model){
        Klienci klienci = new Klienci();
        model.addAttribute("klienci",klienci);
        return "/klient/klient_dodaj";
    }
    //zapisywanie klientów do bazy danych
    @PostMapping("/klientZapisz")
    public String saveKlient(@ModelAttribute("klienci") Klienci klienci, Model model){
        klienciService.saveKlienci(klienci);

        model.addAttribute("typ", "dodanie_rekordu");
        model.addAttribute("sukces", "Pomyślnie dodano klienta");

        return getKlient_baza(model);
    }

    //strona z edytowaniem klienta
    @GetMapping("/klient_dodaj/{id_klienta}")
    public String showFormForUpdate(@PathVariable(value = "id_klienta") Integer id_klienta, Model model) {

        Klienci klienci = klienciService.getKlienciById(id_klienta);
        model.addAttribute("klienci", klienci);
        model.addAttribute("edycja", "true");
        return "/klient/klient_dodaj";

    }
    //usuwanie klienta  z bazy danych
    @GetMapping("/usun_klienta/{id_klienta}")
    public String usunKlienta(@PathVariable(value = "id_klienta")Integer id_klienta, Model model){

        model.addAttribute("typ","usuniecie_rekordu");
        model.addAttribute("sukces","Pomyślnie usunięto klienta");

        this.klienciService.usunKlientaById(id_klienta);
        return getKlient_baza(model);
    }
    //podział na strony
    @GetMapping("/klient_baza/{pageNo}")
    public String findPaginated(@PathVariable(value = "pageNo")int pageNo, Model model){

        int pageSize = 10;
        Page<Klienci> page = klienciService.findPaginated(pageNo,pageSize);
        List<Klienci> klienciList = page.getContent();

        model.addAttribute("aktualnaStrona", pageNo);
        model.addAttribute("wszystkieStrony", page.getTotalPages());
        model.addAttribute("total", page.getTotalElements());


        model.addAttribute("listaKlientow", klienciList);
        return "/klient/klient_baza";

        }
//klient wyświetlanie listy klientów
@自动连线
公共场所;公共场所;
@GetMapping(“/klient_baza”)
公共字符串getKlient_baza(模型){
addAttribute(“listaklinetow”,klienceservice.getAllKlieci());
返回FindPagined(1,型号);
}
//多达瓦尼·克莱蒂诺·巴齐·达尼奇
@GetMapping(“/klient_dodaj”)
公共字符串getKlient_dodaj(模型){
Klienci Klienci=新Klienci();
addAttribute(“klienci”,klienci);
返回“/klient/klient_dodaj”;
}
//扎皮西瓦尼·克利托沃·巴齐·达尼奇
@后映射(“/klientZapisz”)
公共字符串saveKlient(@modeldattribute(“klienci”)klienci-klienci,Model-Model){
克林塞维西。萨维克林西(克林西);
模型.addAttribute(“典型”、“dodanie_rekordu”);
模型添加属性(“sukces”、“Pomyślnie dodano klienta”);
返回getKlient_baza(模型);
}
//斯特罗纳·兹埃德瓦尼姆·克利恩塔
@GetMapping(“/klient_dodaj/{id_klienta}”)
公共字符串showFormForUpdate(@PathVariable(value=“id\u klienta”)整数id\u klienta,模型){
Klienci Klienci=klienceservice.getKlienciById(id_klienta);
addAttribute(“klienci”,klienci);
model.addAttribute(“edycja”,“true”);
返回“/klient/klient_dodaj”;
}
//usuwanie klienta z bazy danych
@GetMapping(“/usun\u klienta/{id\u klienta}”)
公共字符串usunKlienta(@PathVariable(value=“id\u klienta”)整数id\u klienta,Model){
model.addAttribute(“典型”、“通常情况”);
模型添加属性(“sukces”、“Pomyślnie usunięto klienta”);
这个.klienceservice.usunKlientaById(id_klienta);
返回getKlient_baza(模型);
}
//波兹亚娜·斯特罗尼
@GetMapping(“/klient_baza/{pageNo}”)
公共字符串findPaginated(@PathVariable(value=“pageNo”)int pageNo,Model){
int pageSize=10;
Page Page=klienceservice.findPaginated(页码、页面大小);
List klienciList=page.getContent();
model.addAttribute(“aktualnaStrona”,页码);
addAttribute(“wszystkieStrony”,page.getTotalPages());
model.addAttribute(“total”,page.getTotalElements());
model.addAttribute(“listaKlientow”,klienciList);
返回“/klient/klient_baza”;
}

如何在此处添加查询方法是否使用@QUERY仅显示名称为“Patryk”的客户端?

您实际上不需要使用带@QUERY注释的方法。Spring数据足够“智能”,可以基于模型属性生成查询。您只需将方法声明添加到KlienciRepository接口:

List<Klienci> listKlienciByNazwiskoKlienta(String name);
列表listkliencibiynazwiskoklienta(字符串名称);
Spring数据将研究一个名为nazwiskoKlienta和b的属性的Klienci模型
List<Klienci> listKlienciByNazwiskoKlientaContaing(String name);
public interface KlienciRepository extends JpaRepository<Klienci, Integer> {
  Klienci findByImieKlienta (String imieKlienta);
}
@Repository
public interface KlienciRepository extends JpaRepository<Klienci, Integer> {
   
   List<Klienci> findByimieKlientaIgnoreCase(String firstName);
}
@Repository
public interface KlienciRepository extends JpaRepository<Klienci, Integer> {


@Query(SELECT * from klienci k where k.imieKlienta like "?1%")

List<klienci> findbyfirstname(String firstname);

}