Quarkus アプリケーションの起動時に一連の SQL ビューを作成したいと思い、次のように書きました。
@Inject
EntityManager em;
public void exec(... sql) {
logger.info("EXECUTING " ...);
sql = "BEGIN\n" + sql + "\nEND";
Query q = em.createNativeQuery(sql);
q.executeUpdate();
}
そして、私のSQLファイルは次のとおりです。
CREATE OR REPLACE VIEW My_view_ex AS
SELECT cc.*, If(cc.beautifulName IS NULL, cc.name, cc.beautifulName) canonName FROM My_table cc;
CREATE OR REPLACE VIEW MyView2 AS
...
残念ながら、それは例外をスローし、
java.sql.SQLException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'CREATE OR REPLACE VIEW My_view_ex AS
SELECT cc.*, If(cc.beautifulName IS NU...' at line 2
sql
変数の内容をデータベース クライアントにコピー ペーストして実行すると、動作します。つまり、実際には構文エラーはありません。おそらく、複数のクエリや行末などが嫌いです。
他に何が提案できますか?