Me gustaría enriquecer la entidad con datos adicionales sobre la carga desde la base de datos dentro de @PostLoad .
¿Cómo puedo acceder a los beans administrados por Spring dentro del método @PostLoad ?
Uso una solución fea con acceso estático:
@Service public class StaticApplicationContext implements ApplicationContextAware { private static ApplicationContext ctx = null; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { ctx = applicationContext; } public static ApplicationContext getApplicationContext() { return ctx; } } @Entity public class Car { @Id private Long id; ... @Transient private List<XType> details; @PostLoad private void onLoad() { XTypeRepository repo = StaticApplicationContext.getCtx() .getBean(XTypeRepository.class) ; this.details = repo.findByCarId(this.id); } } Idea correspondiente para el acceso static descrito en Acceder a los beans de primavera en el método estático
¿Hay más solución idiomática/marco de azúcar?
@OneToMany @JoinFormula(value = "SELECT * FROM xTypeTable xt WHERE xt.carId = id") private List<XType> pastArticles;¿No puede simplemente usar JoinFormula y cargar los datos con herramientas estándar? Simplemente escriba SQL que recupera datos para el XType. En el ejemplo anterior, reemplace id con el nombre de columna de la propiedad id (si es diferente)