Spring 3.1.0.RELEASE と Hibernate 4.0.1.Final を使用しています。エンティティ Bean が DB からロードされたときにイベント リスナーを呼び出したいのですが、どのイベントを使用すればよいかわかりません。私は自分のエンティティを私のDAOにロードします
@Repository("eventFeedsDao")
public class EventFeedsDaoImpl implements EventFeedsDao {
...
@Autowired
private SessionFactory sessionFactory;
...
@Override
public EventFeed findById(final Integer id) {
EventFeed eventFeed = null;
final Session session = sessionFactory.getCurrentSession();
final Criteria crit = session.createCriteria(EventFeed.class).add(Restrictions.eq("id", id));
final List<EventFeed> results = crit.list();
if (results != null && results.size() > 0) {
eventFeed = results.get(0);
} // if
return eventFeed;
} // findById
これが、イベントの配線をセットアップしようとしている方法です...
@Component
public class HibernateEventWiring {
@Autowired
private SessionFactory sessionFactory;
@Autowired
private EventMavenLoadListener listener;
@PostConstruct
public void registerListeners() {
EventListenerRegistry registry = ((SessionFactoryImpl) sessionFactory)
.getServiceRegistry().getService(EventListenerRegistry.class);
registry.getEventListenerGroup(EventType.LOAD).appendListener(listener);
}
}
私のリスナークラスは次のとおりです...
@Component
public class EventMavenLoadListener implements LoadEventListener {
...
@Override
public void onLoad(final LoadEvent event, final LoadType loadType) throws HibernateException {
if(EventFeed.class.getName().equals(event.getEntityClassName())){
EventFeed entity = (EventFeed) event.getInstanceToLoad();
entity.setNetUtilsService(netUtilsService);
} // if
}
}
ただし、「onLoad」イベントは呼び出されません。私は何を間違っていますか?別のイベントを使用する必要がありますか?