Java 是否从属性文件传递注释参数?
我正在使用Hibernate Columntrasnformer注释在读取和写入列时传递执行某些SQL函数。但是,此SQL函数的一个参数是需要从属性文件传递的字符串Java 是否从属性文件传递注释参数?,java,spring,hibernate,tomcat,Java,Spring,Hibernate,Tomcat,我正在使用Hibernate Columntrasnformer注释在读取和写入列时传递执行某些SQL函数。但是,此SQL函数的一个参数是需要从属性文件传递的字符串 This works @Entity @Table(name = "my_table") public class myEntity { public static final String parameter = "TESTPARAMTER"; @ColumnTransformer(read = "MY_FUNCT
This works
@Entity
@Table(name = "my_table")
public class myEntity {
public static final String parameter = "TESTPARAMTER";
@ColumnTransformer(read = "MY_FUNCTION_READ(my_column_name,"+ parameter "+)", write = "MY_FUNCTION_READ(my_column_name, "+paramter+)"
@Column(name = "my_column_name")
private String myColumnName;
}
我已经把这个变量移到了另一个类中,这也行得通
public class Constants{
public static final String PARAMTER = "TESTPARAMTER";
}
public class myEntity {
@ColumnTransformer(read = "MY_FUNCTION_READ(my_column_name,"+ Constants.PARAMETER "+)", write = "MY_FUNCTION_READ(my_column_name, "+ Constants.PARAMETER +)"
@Column(name = "my_column_name")
private String myColumnName;
}
但是,如果我将Constants类更改为此,它将不起作用
public class Constants{
@Value("${parameter}")
public static String PARAMTER;
}
我得到了错误
注释属性ColumnTransformer.read的值必须是常量表达式
有没有一种方法可以实现这一点,因为我对不同的实体有不同的参数。参数也会不断变化。因此,每当参数发生变化时,这将是一个巨大的代码维护
提前感谢。“必须是一个常量表达式”表示“必须在编译时完全知道”。这意味着您试图实现的方法将不起作用,因为在编译时无法知道属性文件中的值。