TL; DR
AnormでSQL文を実行する際のSQL文が長すぎるとStackOverflowErrorがthrowされる。
解決方法はクエリの長い部分を別途Stringで切り出すことで回避可能
内容
AnormでSQL文を実行する下記関数
val sql = "INSERT *******"
anorm.SQL(sql).execute()
anorm.SQL(sql).executeInsert()
anorm.SQL(sql).executeUpdate()
において、sql: Stringが長すぎると、StackOverflowErrorとなる。
(具体的に何文字かは不明だが、自分は約5000文字の場合エラーとなった)
回避方法として、下記のようにクエリの一部分を生文字リテラルとして切り出してしまうとうまくいく。
val text = """(めちゃめちゃ長いstring)"""
val sql = s"""INSERT INTO xxx (id, text) VALUES ("1", "$text");"""
SQL(sql).executeInsert()
補足
ちなみにslickの
Q.updateNA(xxx).execute
でも問題なく実行できます。自分は結局こっちを使いました(約5000文字でも問題なく実行できた)
何かご指摘やもっと良い方法等がありましたらコメントお願いします!