If you're using jooq records, you could use a RecordListener like I do for
a similar case.
My *from* field is *modified_by* and I populate it automatically:
/**
This RecordListener serves as an interceptor for the record.store() calls
and inserts a ‘modified_by’ field if one exists.
As it is not possible to search for the field, we search for the
corresponding getter method ‘getModifiedBy’.
As the search for a corresponding method is expensive, we remember the
results in a cache.
*/
public class JooqRecordListenerSetModifiedBy extends DefaultRecordListener {
@Override
public void insertStart(RecordContext ctx) {
setModifiedBy(ctx);
}
@Override
public void storeStart(RecordContext ctx) {
setModifiedBy(ctx);
}
private void setModifiedBy(RecordContext ctx) {
Record dbRecord = ctx.record();
Class<?> clazz = dbRecord.getClass();
Boolean hasModifiedBy = cache.get(clazz);
if (hasModifiedBy == null) {
hasModifiedBy = hasModifiedBy(dbRecord);
cache.put(clazz, hasModifiedBy);
}
if (hasModifiedBy.equals(Boolean.TRUE)) {
dbRecord.setValue(DSL.field(DSL.name("modified_by")), UsernameResolver.
resolveUsername());
}
}
private Boolean hasModifiedBy(Record dbRecord) {
Boolean result = Boolean.FALSE;
Method[] methods = dbRecord.getClass().getDeclaredMethods();
for (Method method : methods) {
if (method.getName().equals("getModifiedBy")) {
result = Boolean.TRUE;
break;
}
}
return result;
}
}
The other audit field is *modified_at* and it's automatically set by JOOQ
due to the maven plugin configuration:
<generator>
<database>
<recordTimestampFields>modified_at</recordTimestampFields>
....
Hope it helps
Dominik
--
You received this message because you are subscribed to the Google Groups "jOOQ
User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/jooq-user/efd98b9e-c9b4-42c4-a013-9defe67256e9n%40googlegroups.com.