使用TIMESTAMPDIFF的JPA Hibernate公式中的SQL Literal

对于使用@Formula定义伪列的JPA实体:

 @Formula("TIMESTAMPDIFF(SECOND, dateColA, dateColB)") private Long duration; 

这里预计SECOND将被视为常量字面值(使用MySQL),但是,在生成的JPQL中,它被视为列名,就像dateColAdateColB一样,如:

 where ... TIMESTAMPDIFF(entity_.SECOND, entity_.dateColA, entity_.dateColB) ... 

我想知道如何为SECOND文字正确生成JPQL?

谢谢

将TIMESTAMPDIFF(SECOND,dateColA,dateColB)封装在mysql函数中

这在Java代码中:

 @Formula("second_diff(dateColA, dateColB)") private Long duration; 

这个创建function:

 DELIMITER $$ CREATE DEFINER=`root`@`localhost` FUNCTION `second_diff`( dateColA date, dateColB date ) RETURNS int(11) BEGIN DECLARE diff INT; SET diff = TIMESTAMPDIFF(SECOND, dateColA, dateColB); RETURN diff; END$$ DELIMITER ;