Tengo una aplicación Spring Boot y estoy tratando de pasar una propiedad de application.properties como una anotación de parámetro dentro de la clase Entity así:
@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;Y mi application.properties tiene:
start-seq=100000Pero no compila diciendo "tipos incompatibles: java.lang.String no se puede convertir a int" sin reconocer la expresión. También traté de pasar esta propiedad con la anotación @Value a una variable como esa:
@Value("${start-seq}") private int startSeq;Pero la variable siempre es 0. Tengo las siguientes anotaciones antes de mi clase de configuración, pero aún no funciona:
@Configuration @EnableConfigurationProperties @PropertySources({ @PropertySource("classpath:application.properties") })¿Me estoy perdiendo de algo?
@SequenceGenerator no es una anotación de Spring. Por lo tanto, Spring no evalúa esto durante el procesamiento de la creación de la entidad.
No puede usar el lenguaje de expresión de primavera (SpEl) aquí.
Si desea configurarlos, debe usar JPA o la configuración de Hibernate para esto.
P.ej. escribir o extender el SequenceGenerator actual. Ver aquí para más detalles:
https://thorben-janssen.com/custom-sequence-based-idgenerator/