繁体   English   中英

如何使用带有“从方法名创建查询”策略的Spring数据JPA来实现这两个简单查询?

[英]How can I implement these 2 simple queries using Spring data JPA with the “query creation from method names” strategy?

我是Spring Data的新手,我必须在官方文档中写一些所谓的“ 从方法名称创建查询” ,此处为参考: https : //docs.spring.io/spring-data/jpa/docs/current /reference/html/#repositories.query-methods.query-creation

如您在前面的示例中看到的,通过方法名称的定义显示了查询的创建,例如:

List<Person> findByEmailAddressAndLastname(EmailAddress emailAddress, String lastname);

我认为返回具有特定电子邮件地址和特定姓氏的Person对象的列表。

所以我试图在我的项目中使用Hibernate作为JPA提供程序做同样的事情。

在我的项目中,我有一个Twb1012Regione实体类,该实体类将anagrafiche.TWB1012_REGIONE映射到数据库中:

@Entity
@Table(name="anagrafiche.TWB1012_REGIONE")
@NamedQuery(name="Twb1012Regione.findAll", query="SELECT t FROM Twb1012Regione t")
public class Twb1012Regione implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @Column(name="COD_REG")
    private String codReg;

    @Column(name="COD_ARE_GEO")
    private String codAreGeo;

    @Column(name="COD_CIT")
    private String codCit;

    @Column(name="COD_IST")
    private int codIst;

    @Column(name="COD_PGM_ULT_MOV")
    private String codPgmUltMov;

    @Column(name="COD_UTE_ULT_MOV")
    private String codUteUltMov;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name="DAT_ORA_ULT_MOV")
    private Date datOraUltMov;

    @Column(name="DES_REG")
    private String desReg;

    //bi-directional many-to-one association to Tpg1029Provnuoist
    @OneToMany(mappedBy="twb1012Regione")
    private List<Tpg1029Provnuoist> tpg1029Provnuoists;

    //bi-directional many-to-one association to Twb1013Provincia
    @OneToMany(mappedBy="twb1012Regione")
    private List<Twb1013Provincia> twb1013Provincias;

    public Twb1012Regione() {
    }

    public String getCodReg() {
        return this.codReg;
    }

    public void setCodReg(String codReg) {
        this.codReg = codReg;
    }

    public String getCodAreGeo() {
        return this.codAreGeo;
    }

    public void setCodAreGeo(String codAreGeo) {
        this.codAreGeo = codAreGeo;
    }

    public String getCodCit() {
        return this.codCit;
    }

    public void setCodCit(String codCit) {
        this.codCit = codCit;
    }

    public int getCodIst() {
        return this.codIst;
    }

    public void setCodIst(int codIst) {
        this.codIst = codIst;
    }

    public String getCodPgmUltMov() {
        return this.codPgmUltMov;
    }

    public void setCodPgmUltMov(String codPgmUltMov) {
        this.codPgmUltMov = codPgmUltMov;
    }

    public String getCodUteUltMov() {
        return this.codUteUltMov;
    }

    public void setCodUteUltMov(String codUteUltMov) {
        this.codUteUltMov = codUteUltMov;
    }

    public Date getDatOraUltMov() {
        return this.datOraUltMov;
    }

    public void setDatOraUltMov(Date datOraUltMov) {
        this.datOraUltMov = datOraUltMov;
    }

    public String getDesReg() {
        return this.desReg;
    }

    public void setDesReg(String desReg) {
        this.desReg = desReg;
    }

    public List<Tpg1029Provnuoist> getTpg1029Provnuoists() {
        return this.tpg1029Provnuoists;
    }

    public void setTpg1029Provnuoists(List<Tpg1029Provnuoist> tpg1029Provnuoists) {
        this.tpg1029Provnuoists = tpg1029Provnuoists;
    }

    public Tpg1029Provnuoist addTpg1029Provnuoist(Tpg1029Provnuoist tpg1029Provnuoist) {
        getTpg1029Provnuoists().add(tpg1029Provnuoist);
        tpg1029Provnuoist.setTwb1012Regione(this);

        return tpg1029Provnuoist;
    }

    public Tpg1029Provnuoist removeTpg1029Provnuoist(Tpg1029Provnuoist tpg1029Provnuoist) {
        getTpg1029Provnuoists().remove(tpg1029Provnuoist);
        tpg1029Provnuoist.setTwb1012Regione(null);

        return tpg1029Provnuoist;
    }

    public List<Twb1013Provincia> getTwb1013Provincias() {
        return this.twb1013Provincias;
    }

    public void setTwb1013Provincias(List<Twb1013Provincia> twb1013Provincias) {
        this.twb1013Provincias = twb1013Provincias;
    }

    public Twb1013Provincia addTwb1013Provincia(Twb1013Provincia twb1013Provincia) {
        getTwb1013Provincias().add(twb1013Provincia);
        twb1013Provincia.setTwb1012Regione(this);

        return twb1013Provincia;
    }

    public Twb1013Provincia removeTwb1013Provincia(Twb1013Provincia twb1013Provincia) {
        getTwb1013Provincias().remove(twb1013Provincia);
        twb1013Provincia.setTwb1012Regione(null);

        return twb1013Provincia;
    }

}

因此,在我的项目中,我定义了一个Twb1012RegioneRepository接口,该接口是在上一个Twb1012Regione实体类上定义的存储库类:

@RepositoryDefinition(domainClass=Twb1012Regione.class, idClass=String.class)
public interface Twb1012RegioneRepository extends JpaRepository<Twb1012Regione, String> {

    // I have to implement it



}

现在,我的问题是我想创建2个方法(执行如上一教程中所述的按方法名实现2个查询)来执行以下任务:

1)返回代表在DB的TWB1012_REGIONE表的所有记录的所有Twb1012Regione名单。

2)给定一个特定的ID( Twb1012Regione类的String codReg字段的值,PK),我想获取与此记录关联的Twb1012Regione对象。

如何实现这些查询? 我有一些困难

特纳克斯

您不需要实现这些方法。 Spring Data Repository API将为您构造查询,因为JpaRepository已经具有以下方法:

这就是Spring Data Repository的重点- 减少您编写的样板代码

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM