在Hibernate实体中加载Spring配置

在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

我想配置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 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值必须是一个常量表达式”。