[英]MySQL stored function with Ebean in Play Framework error
将mysql函数查询与ebean一起使用时会出现什么问题?
EBean在Play Framework中具有mysql函数。
-mysql版本:5.5.25a(jdbc:5.1.29)
-播放版本:2.3.4
-config播放中的ebean
db.default.driver=com.mysql.jdbc.Driver
db.default.url="jdbc:mysql://ip:3306/db?characterEncoding=UTF-8"
db.default.user="id"
db.default.password="pass"
db.default.logStatements=true
evolutionplugin=disabled
-mysql功能
CREATE FUNCTION `get_next_seq_val`() RETURNS BIGINT(20)
BEGIN
DECLARE reslutval BIGINT;
SET reslutval := 0;
UPDATE t_mas_seq
SET last_cached_val = last_cached_val+1
WHERE seq_nm = 'p_seq_nm';
SELECT last_cached_val INTO reslutval FROM t_mas_seq
WHERE seq_nm = 'p_seq_nm';
RETURN reslutval;
END$$
-java src ebean正在运行
int n = Ebean.createSqlQuery("SELECT get_next_seq_val() seq").findUnique().getInteger("seq");
总是'int n'是相同的数字。
每当有分号时,Ebean都会分割您的文件,因此除了简单的分号之外,不需要用其他任何方式来分隔查询。 为了防止ebean每次内部有一个半冒号时都对函数代码进行拆分,您必须使用一个双半冒号对半冒号进行转义:
CREATE FUNCTION `get_next_seq_val`() RETURNS BIGINT(20)
BEGIN
DECLARE reslutval BIGINT;;
SET reslutval := 0;;
UPDATE t_mas_seq
SET last_cached_val = last_cached_val+1
WHERE seq_nm = 'p_seq_nm';;
SELECT last_cached_val INTO reslutval FROM t_mas_seq
WHERE seq_nm = 'p_seq_nm';;
RETURN reslutval;;
END;
另请参见: MySQL分隔符语句错误
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.