package org.tests.callable;
import io.ebean.BaseTestCase;
import io.ebean.CallableSql;
import io.ebean.Ebean;
import io.ebean.EbeanServer;
import org.tests.model.basic.EBasic;
import org.junit.Ignore;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class TestMysqlCallable extends BaseTestCase {
// drop procedure my_stored_procedure if exists;
//
/*
DELIMITER //
create procedure my_stored_procedure(in v_id integer, in v_name varchar(100))
begin
update e_basic set name = v_name where id = v_id;
end;
//
*/
/**
* Only run this test manually against MySQL with the above stored procedure.
*/
@Ignore
@Test
public void test() {
// mysql specific test
EbeanServer server = Ebean.getServer("mysql");
EBasic basic = new EBasic();
basic.setName("calling");
server.save(basic);
CallableSql cs = server.createCallableSql("{call my_stored_procedure(?,?)}");
cs.setParameter(1, basic.getId());
cs.setParameter(2, "modBySP");
// without addModification() need to confirm transaction treated as not query only
//cs.addModification("e_basic", false, true, false);
server.execute(cs);
EBasic basic1 = server.find(EBasic.class, basic.getId());
assertEquals("modBySP", basic1.getName());
}
}