繁体   English   中英

MySQL在Play Framework中使用Ebean存储功能时出错

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM