我试着在dropwizard hibernate中使用SaveOrUpdateDateListener扩展DefaultSaveOrUpdateEventListener。当我在Applicaion类的EventListenerGroup中注册时,如下所示:
@Override
public void run(DFConfiguration configuration,
Environment environment) throws ClassNotFoundException {
//register custom listener into EventListener
SessionFactory sessionFactory = hibernate.getSessionFactory();
EventListenerRegistry listenerRegistry = sessionFactory.getSessionFactoryOptions().getServiceRegistry().getService(EventListenerRegistry.class);
EventListenerGroup<SaveOrUpdateEventListener> evlg = listenerRegistry.getEventListenerGroup(EventType.SAVE_UPDATE);
evlg.appendListener(new SaveOrUpdateDateListener());}
这是SaveOrUpdateDateListener类。公共类SaveOrUpdateDateListener扩展了DefaultSaveOrUpdateEventListener {
@Override
public void onSaveOrUpdate(SaveOrUpdateEvent event) {
logger.debug("Entering onSaveOrUpdate()");
if (event.getObject() instanceof AuditableBase) {
AuditableBase object = (AuditableBase) event.getObject();
// set the Updated date/time
object.setUpdated(new Date().getTime());
// set the Created date/time
if (object.getCreated() == 0) {
object.setCreated(new Date().getTime());
}
}
}}
它在部署时抛出异常:
请求的未知服务org.hibernate.event.service.spi.EventListenerRegistry,堆栈跟踪: org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:126)处请求的org.hibernate.service.UnknownServiceException:未知服务org.hibernate.event.service.spi.EventListenerRegistry
有什么想法吗?谢谢!
发布于 2015-04-02 22:48:41
我找到了解决的办法。因为我用的是createdTime和updatedTime,所以@CreationTimestamp和@UpdateTimestamp帮我解决了这个问题。所以我根本不需要任何自定义的监听器。嗯..。
@Column(name="createdTime", nullable = false, insertable = true,updatable = false)
@Temporal(value = TemporalType.TIMESTAMP)
@CreationTimestamp
private Date createdTime;
@Column(name="updatedTime", nullable = false, insertable = true, updatable = true)
@Temporal(value = TemporalType.TIMESTAMP)
@UpdateTimestamp
private Date updatedTime;https://stackoverflow.com/questions/29172729
复制相似问题