我有一个Spring Boot应用程序,我正试图从application.properties中传递一个属性,作为Entity类中的参数注释,如下所示:
@Entity
public class Entity{
@Id
@SequenceGenerator(name = "entity_id_seq", sequenceName = "entity_id_seq", initialValue = "${start-seq}")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "dish_id_seq")
private int id;
我的application.properties有:
start-seq=100000
但它并没有编纂出这样一句话:;不兼容的类型:java.lang.String无法转换为int"无法识别表达式。此外,我还试图将这个带有@Value注释的属性传递给这样一个变量:
@Value("${start-seq}")
private int startSeq;
但变量始终为0。在我的配置类之前,我确实有以下注释,但它仍然不起作用:
@Configuration
@EnableConfigurationProperties
@PropertySources({
@PropertySource("classpath:application.properties")
})
我是不是错过了什么?
@SequenceGenerator不是Spring注释。因此,spring在实体创建过程中不会对此进行评估。
您不能在此处使用spring表达式语言(SpEl(。
如果你想配置这些,你必须使用JPA或Hibernate配置。
例如。写入或扩展当前SequenceGenerator。请参阅此处了解详细信息:
https://thorben-janssen.com/custom-sequence-based-idgenerator/