根据此处的文章,我正在使用 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;
}
}
当我调试它时,它正在执行 PreInsertListener 代码,但插入数据库的值不包含代码的更改。这曾经在 Hibernate 3 中工作。我在这里缺少什么?