小编cla*_*net的帖子

使用Hibernate PreInsertEventListener更改实体

我正在使用Hibernate 4.1尝试调用PreInsertEventListener来在将实体插入数据库之前更新实体,基于以下文章:http://anshuiitk.blogspot.ca/2010/11/hibernate-pre-database-opertaion-event html的

public class PreInsertListener implements PreInsertEventListener {

    @Override
    public boolean onPreInsert(PreInsertEvent event) {
        Product product  = (Product)event.getEntity();
        String barcode = "B" + product.getProductId();
        product.setBarcode(barcode);

        // Update the state value that will be persisted
        String[] properties = event.getPersister().getEntityMetamodel().getPropertyNames();
        List<String> propertiesList = Arrays.asList(properties);
        event.getState()[propertiesList.indexOf('barcode')] = barcode;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我调试它时,它正在执行PreInsertListener代码,但插入到数据库中的值不包含代码中的更改.这曾经在Hibernate 3中工作.我在这里缺少什么?

persistence hibernate event-listener insert-update

6
推荐指数
2
解决办法
3364
查看次数