Spring data JPA 报错JPA-style positional param was not an integral ordinal

 

Spring boot  整合Spring data neo4j时,在持久化接口的时候,抛出异常,原来是使用的sql语句后的";"的问题.

或者直接添加空格.. 

 

 

该sql就会抛出上面的错误,原因就是sql使用时,?1和后面的分后连接在了一起,没有起具体的作用.

直接把sql后面的分号拿掉就不会有问题了;

 

 

TIPS:

 

此时使用的是mysql数据库

业务需求,查询出当天生日的客户的信息;

 

此时,以前的想法是查询出所有的数据,然后比对当天的生日的客户.然后取出来想用的数据;

其实mysql还有一个DAY()和MONTH()函数

select * from customer where MONTH(birthday) = MONTH(NOW()) and DAY(birthday) = DAY(NOW())

 

查询客户中的月份等于今天对应的月份 AND 天数和今天是相等的情况.即是月份和日期相等,即客户是今天的生日;

 

还有一个业务是查询,客户的三天后是还款日的客户信息;

这样一想,好像只要看day的情况就可以了...

 

但是这里有一个情况是,三天后是还款日,即可能是本月,也可能是次月(即1号还款日和31号还款日)是不同....

 

所以,当当天日数和三天后的日期进行比较.如果是小于三天后的日期,则是本月;否则是次月;比较绕...哈哈哈

 

    public void getDayBefor() {
        long currentTimeMillis = System.currentTimeMillis();
        long period = (long) (days * 86400000);
        Date d = new Date(period + currentTimeMillis);
        Calendar calendar = Calendar.getInstance();
        int now = calendar.get(Calendar.DAY_OF_MONTH);
        calendar.setTime(d);
        day = calendar.get(Calendar.DAY_OF_MONTH);
        if (now > day){
            next = "次";
        }else {
            next = "本";
        }
        logger.debug(days + "天后的日期是:" + day+"日,选择月份是:"+next);
    }

 

这样的话,先获得本月的第几天(即日数),再看三天后的日期,这里使用了long值进行换算,相对偷了个懒,其实用calendar也可以..

然后比较当前的日数和三天后的日数的大小,判断是本月还是次月;

 

当然这个days不会大于28,因为如果遇到2月份这种情况,就跨月了....

业务也不允许提前28天提醒还款信息.

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值