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天提醒还款信息.

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章