使用TIMESTAMPDIFF的JPA Hibernate公式中的SQL Literal
对于使用@Formula
定义伪列的JPA实体:
@Formula("TIMESTAMPDIFF(SECOND, dateColA, dateColB)") private Long duration;
这里预计SECOND
将被视为常量字面值(使用MySQL),但是,在生成的JPQL中,它被视为列名,就像dateColA
和dateColB
一样,如:
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 ;