Just came across the same problem myself and found that you need to change that state values in the event for the insert to work. You still need to change your object too in order to avoid an update occuring later when you flush the session.
I'd say you need something like:
Code:
public boolean onPreInsert(PreInsertEvent event) {
if (event.getEntity() instanceof BaseModel) {
BaseModel model = (BaseModel) event.getEntity();
Date now = new Date();
model.setCreatedDate(now);
model.setModifiedDate(now);
String[] names = event.getPersister().getPropertyNames();
Object[] values = event.getState();
for (int i = 0; i < names.length; i++) {
if (names[i].equals("createdDate")
|| names[i].equals("modifiedDate"))
values[i] = now;
}
}
return false;
}
Cheers,
Paul.