Если вам это нужно только в редких особых случаях, самый простой способ состоит в том, чтобы выдавать INSERT
запросы в нативном SQL вместо использования save()
.
Кроме того, вы можете настроить генератор для достижения желаемого поведения:
public class FallbackUUIDHexGenerator extends UUIDHexGenerator {
private String entityName;
@Override
public void configure(Type type, Properties params, Dialect d)
throws MappingException {
entityName = params.getProperty(ENTITY_NAME);
super.configure(type, params, d);
}
@Override
public Serializable generate(SessionImplementor session, Object object)
throws HibernateException {
Serializable id = session
.getEntityPersister(entityName, object)
.getIdentifier(object, session);
if (id == null)
return super.generate(session, object);
else
return id;
}
}
и настройте Hibernate для использования, указав полное имя как strategy
.