【发布时间】:2026-02-10 10:25:02
【问题描述】:
我正在使用 Hibernate 拦截器来处理更新,并且需要 Repository 来保存在数据库中。
我自动装配存储库,但它不工作。始终为空。这是我的代码:
@Component
public class AuditInterceptor extends EmptyInterceptor {
@Autowired
private LogsRepository repository;
public boolean onFlushDirty(Object entity, Serializable id, Object[] currentState, Object[] previousState,
String[] propertyNames, Type[] types) {
if(entity instanceof Personnel) {
for (int i = 0; i < propertyNames.length; i++) {
if(currentState[i] != previousState[i]) {
Log log = new Log();
log.setEntity("Personnel");
log.setIdEntity(id.toString());
log.setPropertyChanged(propertyNames[i] );
log.setOldValue(previousState[i] != null ? previousState[i].toString() : "");
log.setNewValue(currentState[i] != null ? currentState[i].toString() : "");
log.setTimestamp(new Date());
System.out.println(log.toString());
repository.save(log);
return true;
}
System.out.println("Property names :"+propertyNames[i]);
System.out.println("Old value :"+previousState[i]);
System.out.println("New value :"+currentState[i]);
}
}
return false;
}
}
拦截器工作正常,但 LogRepository 始终为空。
【问题讨论】:
标签: mysql hibernate spring-boot spring-data-jpa