Java JPA Hibernate公式中使用TIMESTAMPDIFF的SQL文本
对于使用Java JPA Hibernate公式中使用TIMESTAMPDIFF的SQL文本,java,mysql,hibernate,jpa,formula,Java,Mysql,Hibernate,Jpa,Formula,对于使用@Formula定义了伪列的JPA实体: @Formula("TIMESTAMPDIFF(SECOND, dateColA, dateColB)") private Long duration; 在这里,SECOND被视为一个常量文本(使用MySQL),但是,在生成的JPQL中,它被视为一个列名,就像dateColA和dateColB一样,比如: where ... TIMESTAMPDIFF(entity_.SECOND, entity_.dateColA, entity_.date
@Formula
定义了伪列的JPA实体:
@Formula("TIMESTAMPDIFF(SECOND, dateColA, dateColB)")
private Long duration;
在这里,SECOND
被视为一个常量文本(使用MySQL),但是,在生成的JPQL中,它被视为一个列名,就像dateColA
和dateColB
一样,比如:
where ... TIMESTAMPDIFF(entity_.SECOND, entity_.dateColA, entity_.dateColB) ...
我想知道如何为第二个文本正确生成JPQL
谢谢将TIMESTAMPDIFF(SECOND,dateColA,dateColB)封装在mysql函数中
这在Java代码中是:
@Formula("second_diff(dateColA, dateColB)")
private Long duration;
要创建函数,请执行以下操作:
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 ;
中的答案在这里也会有所帮助。