我正在使用 Spring 3.1.0.RELEASE 和 Hibernate 4.0.1.Final。我想在从数据库加载实体 bean 时调用它的事件侦听器,但我不知道应该使用什么事件。我像这样在我的 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”事件。我究竟做错了什么?我应该使用另一个事件吗?