我不能将 @Value 注释与 @Transient 注释一起使用吗?

San*_*Lee 3 java spring hibernate spring-annotations hibernate-annotations

我有一个类来映射一个使用休眠的表。有一些变量我想忽略以用于映射以用作常量。我想从属性加载常量值,所以我这样编码:

@Transient
@Value("${something.value}")
private int MY_VALUE;
Run Code Online (Sandbox Code Playgroud)

但是,的值MY_VALUE始终设置为 0。我不能将 @Transient 注释与 @Value 注释一起使用吗?还是我错过了其他东西?

Sea*_*oyd 5

这两个注释属于不同的域。

@Transient属于一个实体,而@Value属于 Spring Beans。实体由 JPA/Hibernate 管理,Spring Beans 由 Spring 管理。将两者混合使用并不是一个好主意。

可以通过使用@Configurable注释和 AspectJ 编译或加载时间编织实现这一点,但我强烈建议不要使用这种黑客。使用 Spring Bean 来保存一个@Value,而不是一个实体!