在Hibernate实体中加载Spring配置
我想配置Hibernate为VARCHAR字段设置最大长度。此最大长度在配置文件中定义,此配置文件由类ValidationConfiguration加载 这是我的实体:在Hibernate实体中加载Spring配置,spring,hibernate,spring-boot,entity,Spring,Hibernate,Spring Boot,Entity,我想配置Hibernate为VARCHAR字段设置最大长度。此最大长度在配置文件中定义,此配置文件由类ValidationConfiguration加载 这是我的实体: @Entity public class MyEntity{ @Autowired /*I know this is bad practice, I just want to let readers know that this object is instantiated.*/ private Va
@Entity
public class MyEntity{
@Autowired /*I know this is bad practice,
I just want to let readers know that this object is instantiated.*/
private ValidationConfiguration config;
@Column(length = config.getMaxLength()) /*This gives a "java: element value
must be a constant expression"*/
String description;
//Get and set
}
这可能吗?如果没有,是否有任何解决方法?从您的代码中可以清楚地看到,您只是通过
私有验证配置配置定义了验证配置
代码>
但是您没有实例化对象。
因此,实例化对象,比如newvalidationconfiguration()
,由于您没有共享ValidationConfiguration
的代码,我预测您的方法是getMaxLength()
而不是静态的。如果问题仍然存在,请共享ValidationConfiguration代码。
如果这是一个bean,那么您可以autowire
简单地创建它,而不创建新的实例化。可能重复它是相关的,但不是重复的。我在发布我自己的问题之前读过这个问题。你可以假设这个对象是实例化的。我现在添加了一个@Autowire。但是,我根本无法在注释中调用任何方法。我应该能够在注释参数内调用成员变量的方法吗?不要自动关联它。你能检查一下这个语句private ValidationConfiguration=new ValidationConfiguration();我尝试添加ValidationConfiguration=newvalidationconfiguration()代码>在构造函数中,但无效。在注释参数内部,编译器似乎将config
视为基本类型。我仍然得到“java:element值必须是一个常量表达式”。