我正在使用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中工作.我在这里缺少什么?