我發現使用PostLoadEventListener的解決方案,但它是休眠,不正是我一直在尋找,但工作。我認爲這應該是更一般的春季解決方案。
@Component
public class UserInterceptor implements PostLoadEventListener {
@Autowired
private SecondRepository repo;
@Autowired
@Qualifier("prmiaryEntityManagerFactory")
private EntityManagerFactory entityManagerFactory;
@PostConstruct
private void init() {
HibernateEntityManagerFactory hibernateEntityManagerFactory = (HibernateEntityManagerFactory) this.entityManagerFactory;
SessionFactoryImpl sessionFactoryImpl = (SessionFactoryImpl) hibernateEntityManagerFactory.getSessionFactory();
EventListenerRegistry registry = sessionFactoryImpl.getServiceRegistry().getService(EventListenerRegistry.class);
registry.appendListeners(EventType.POST_LOAD, this);
}
@Override
public void onPostLoad(PostLoadEvent event) {
final Object entity = event.getEntity();
if(entity != null && entity instanceof User) {
User user = (User) entity;
// populate using another repo bean
Info s = repo.findOne(user.getInfoId());
user.setInfo(s.getName());
}
}
}
你想如何填充它?暫時的意味着它只會在數據庫中不存在,但該字段仍然可用 – ricol070