Desde el REPL:Adición de tipo explícita a val val evita que se utilice como una constante en la anotación
scala> final val x = "x"
x: java.lang.String("x") = x
scala> @javax.persistence.Table(name = x) case class foo()
defined class foo
scala> final val x:java.lang.String = "x"
x: java.lang.String = x
scala> @javax.persistence.Table(name = x) case class foo()
<console>:6: error: annotation argument needs to be a constant; found: x
@javax.persistence.Table(name = x) case class foo()
¿Puede alguien explicar por qué esto sólo funciona sin un tipo?
¿Por qué usa la palabra clave 'final'? – paradigmatic
final es necesario para crear la constante literal que Daniel menciona a continuación. Sin él, obtendrá el mismo error mencionado anteriormente. – scalapeno