使用ebean的mysql函数查询时出现的问题是什么?
在Play Framework中使用Ebean的mysql函数。
-mysql版本:5.5.25a(jdbc:5.1.29)
- 播放版本:2.3.4
-config ebean in play
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 in play
int n = Ebean.createSqlQuery("SELECT get_next_seq_val() seq").findUnique().getInteger("seq");
始终' int n'是相同的数字。
答案 0 :(得分:0)
每次有一个分号时,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;