当前位置: 首页 > 知识库问答 >
问题:

具有多个条件的JPA查找方法

邵耀
2023-03-14

这里我试图用jpa从mysql数据库中获取数据,但是我被findby绊倒了,如何使用Crudepository spring数据jpa为下面的查询编写findby方法

select t.id, t.MSISDN, t.Param1, t.param2
  from BULK_REPOSITORY t
where t.Camp_Start_Date between Sysdate - 2 and sysdate
   and t.status = 0
   and t.camp_type = 1;

我试过这个,但它不工作:

List<Bulk_repository> findByStatusInAndfindByCamp_typeIn(int status, int camp_type);

我有这样的实体类:

@Entity
@Table(name = "BULK_REPOSITORY")
public class Bulk_repository {

   @Id
   @GeneratedValue(strategy=GenerationType.AUTO)
   @Column(name = "id")
   private long id;

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

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

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

   @Column(name = "camp_type")
   private int camp_type;

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

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

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

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

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

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

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

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

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

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

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

共有3个答案

封德华
2023-03-14

您可以将Spring数据JPA中的@Query与JPQL一起使用:

JPQL不支持句号。所以你必须自己处理:

java prettyprint-override">@Query("SELECT t from Bulk_repository t " + 
    "WHERE t.camp_start_date BETWEEN CURRENT_DATE AND :currentDateMinus2 " + 
    "AND t.status = :status " + 
    "AND t.camp_type = :campType")
List<Bulk_repository> findByStatusInAndfindByCamp_typeIn(
    @Param("status") int status, 
    @Param("campType") int camp_type, 
    @Param("currentDateMinus2") Date currentDateMinus2);
于恺
2023-03-14

我建议将日期范围作为参数传递给方法。

 List< Bulk_repository> findByStatusIsAndCamp_typeIsAndCamp_start_dateBetween(int status, int campType, Date start, Date end)
麹凯捷
2023-03-14

试试下面

 List<Bulk_repository>  findAllByStatusAndCamp_typeAndCamp_start_dateBetween(
int status, int camp_type,Date camp_start_dateStart, Date camp_start_dateEnd)

无论你想叫它到哪里

@Autowired
private Bulk_repository bulkRepository;


public List<Bulk_repository> getListRepositoryByConditions(){
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, -2);

Date startDate = cal.getTime();

Date endDate = new Date();

return bulkRepository.findAllByStatusAndCamp_typeAndCamp_start_dateBetween(
0, 1,startDate, endDate);

}
 类似资料:
  • 我尝试在数据帧“df_energy”中添加一个新的列“energy_class”,如果“consumpion_energy”值为 有什么办法可以帮我吗? 先谢谢你

  • 我不能执行这个声明。

  • 我收集了用户在商店购买的物品,以及他从朋友那里得到的喜欢和不喜欢的东西。集合字段如下所示: 现在,我想得到以下总结: 获取用户X的(喜欢-不喜欢)差异 获取用户X的差异(喜欢-不喜欢)到存储Y 获取用户X的(喜欢-不喜欢)差异到商店Y和产品Z 对于#1,我做了: 我得到了正确的结果: [{"_id":"542ea90fbb1e37b09f660980","rankDiff": 2}] 但当我试图通

  • 问题内容: 我想知道是否可能有这样的事情: 知道项目是通过请求接收的JSON容器,因此这就是为什么我使用键值方法的原因。 谢谢 我之所以问是因为我尝试使用Google进行谷歌搜索,但是我唯一能得到的结果是,但是我必须使用。 问题答案: 你当然可以。就像是: HTML JS 演示小提琴

  • 基于我上一篇文章:Spring JPA long SQL String for NativeQuery null 我试着重命名了上面看到的文件,但它说文件中的方法在启动过程中找不到。知道如何让项目理解多个orm.xml文件吗?

  • 我的应用程序有250多个表,每个表都有ID和name列。我正在尝试用Hibernate5+将我们的应用程序从Hibernate3迁移到Spring-JPA4.3。 在当前的hibernate层中,我有(选项1): 因此,如何在一个JPA存储库中执行以下操作: