如何使用Spring数据JPA实现这两个简单查询,并使用#34;方法名创建查询"战略是什么?

时间:2015-09-15 09:31:41

标签: java spring jpa spring-data spring-data-jpa

我是 Spring Data 中的新手,我必须在官方文档中写一些似乎被称为从方法名称创建查询的内容,这里引用:{{ 3}}

正如您在上一个示例中所看到的,显示了通过方法名称的定义创建查询,例如:

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

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

所以我试图在我的项目中使用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)返回代表数据库上 TWB1012_REGIONE 表的所有记录的所有 Twb1012Regione 的列表。

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

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

TNX

1 个答案:

答案 0 :(得分:0)

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

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