@Override public Serializable generate(SessionImplementor session, Object entity) throws HibernateException { Serializable id; EntityPersister persister = session.getEntityPersister(entityName, entity); // Determine if an ID has been assigned. id = persister.getIdentifier(entity, session); if (id == null) { id = super.generate(session, entity); } return id; }
@Override public Serializable generate(SessionImplementor session, Object obj) { Serializable result = null; // if user has set the id manually, don't change it. try { Class<?> clazz = obj.getClass(); Method idMethod = clazz.getMethod("getId"); result = (Serializable) idMethod.invoke(obj); } catch (Exception e) { // do nothing } // id not set (or set to 0 due to hibernate bug workaround), proceed // as if generator was set to AUTO if (result == null || (result.toString().equals("0"))) { return super.generate(session, obj); } return result; } }
public Serializable generate(SessionImplementor session, Object object) throws HibernateException { final Serializable id = session.getEntityPersister(entityName, object).getIdentifier(object, session); if (id == null) { return super.generate(session, object); } return id; }
@Override public Serializable generate(SessionImplementor session, Object obj) throws HibernateException { if (obj == null) throw new HibernateException(new NullPointerException()) ; if ((((Identifiable) obj).getId()) == null) { Serializable id = super.generate(session, obj) ; return id; } else { return ((Identifiable) obj).getId(); } } }
@Override public Serializable generate(SharedSessionContractImplementor session, Object obj) { if(obj instanceof Identifiable) { Identifiable identifiable = (Identifiable) obj; Serializable id = identifiable.getId(); if(id != null) { return id; } } return super.generate(session, obj); }