Java 如何在Spring数据JPA中编写下面的SQL查询?

Java 如何在Spring数据JPA中编写下面的SQL查询?,java,spring-boot,spring-data-jpa,Java,Spring Boot,Spring Data Jpa,这应该行得通 @Entity @Table(name = "vnfconfigdetails", schema = "testreports") public class VnfConfigDetailsDB { private static final long serialVersionUID = 1L; @Id @GeneratedValue private int id; @Column(name = "vnfid") private

这应该行得通

@Entity
@Table(name = "vnfconfigdetails", schema = "testreports")
public class VnfConfigDetailsDB {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue
    private int id;

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

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

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

    @Column(name = "configinfo")
    @Lob
    private String configinfo;

    @Column(name = "creationdate")
    private Date creationdate;

    @Column(name = "lastupdated")
    private Date lastupdated;

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


    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getVnfid() {
        return vnfid;
    }

    public void setVnfid(String vnfid) {
        this.vnfid = vnfid;
    }

    public String getVnfversion() {
        return vnfversion;
    }

    public void setVnfversion(String vnfversion) {
        this.vnfversion = vnfversion;
    }

    public String getVnfname() {
        return vnfname;
    }

    public void setVnfname(String vnfname) {
        this.vnfname = vnfname;
    }

    public String getConfiginfo() {
        return configinfo;
    }

    public void setConfiginfo(String configinfo) {
        this.configinfo = configinfo;
    }

    public Date getCreationdate() {
        return creationdate;
    }

    public void setCreationdate(Date creationdate) {
        this.creationdate = creationdate;
    }


    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }



    public Date getLastupdated() {
        return lastupdated;
    }

    public void setLastupdated(Date lastupdated) {
        this.lastupdated = lastupdated;
    }

}
列出FindByVnfindCreationDateBetween(字符串vnfid、日期开始日期、日期结束日期)

您不需要
@Query
。当您说介于之间时,sping数据将正确地表达查询。

在您的例子中,您使用本机查询。这不是JPQL,所以您必须做一些更改

  • 不要在方法中的参数前面使用@Param:请删除@Param(“vnfid”)、@Param(“startDate”)和@Param(“endDate”)

  • 将所有:paramName替换为?。例如,在查询内部用?NumberOfParam等替换:startDate:

     List<VnfConfigDetailsDB> findByVnfidAndCreationdateBetween(String vnfid, Date startDate, Date endDate)
    
    @Query(value=“SELECT*FROM vnfconfig详细信息,其中(creationdate>=?2和creationdate=):startDate和v.creationdate删除@Param

    @Query(value= " SELECT v FROM VnfConfigDetailsDB v where (v.creationdate >= :startDate AND v.creationdate <= :endDate ) AND v.vnfid =:vnfid")
    List<VnfConfigDetailsDB> findByVnfidAndCreationdate(@Param("vnfid") String vnfid,@Param("startDate") Date startDate, @Param("endDate")Date endDate);
    

    谢谢,工作正常。我还提出了其他问题,也是这样的
     List<VnfConfigDetailsDB> findByVnfidAndCreationdateBetween(String vnfid, Date startDate, Date endDate)
    
    @Query(value= " SELECT * FROM vnfconfigdetails where (creationdate >= ?2 AND   creationdate <= ?3 ) AND vnfid =?1", nativeQuery = true)
    List<VnfConfigDetailsDB> findByVnfidAndCreationdate(String vnfid,Date startDate, Date endDate);
    
    @Query(value= " SELECT v FROM VnfConfigDetailsDB v where (v.creationdate >= :startDate AND v.creationdate <= :endDate ) AND v.vnfid =:vnfid")
    List<VnfConfigDetailsDB> findByVnfidAndCreationdate(@Param("vnfid") String vnfid,@Param("startDate") Date startDate, @Param("endDate")Date endDate);
    
    @Query(value = "SELECT * FROM vnfconfigdetails where (creationdate >= ?2 AND   creationdate <= ?3 ) AND vnfid =?1", nativeQuery = true)
    List<VnfConfigDetailsDB> findByVnfidAndCreationdateBetween(String vnfid, Date startDate, Date endDate);
    
    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "creationdate", columnDefinition = "DATETIME")
    private Date creationdate;
    
    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "lastupdated", columnDefinition = "DATETIME")
    private Date lastupdated;