This content has been marked as final.
Show 1 reply
-
1. Re: How Can I turn off GeneratedValue programmatically?
raphaufrj May 25, 2010 10:10 PM (in response to raphaufrj)I solved my problem extending Sequence Gerenator from Hibernate. The workaround works this way.
1. In my entity @Id @GeneratedValue(generator="SEQ_PESQUISA") @GenericGenerator(name="SEQ_PESQUISA", strategy="br.com.activia.commons.persistence.id.CustomSequenceGenerator",parameters = {@Parameter(name="sequence", value="seq_act_pesquisa")}) @Column(name="actpesquisaid") 2. custom class generator public class CustomSequenceGenerator extends SequenceGenerator { @Override public Serializable generate(SessionImplementor session, Object obj) throws HibernateException { System.out.println("CustomSequenceGenerator"); BaseBean<?> myEntity = (BaseBean<?>)obj; //se o id ja foi setado nao precisa gerar da sequence if (myEntity.getId()!=null && myEntity.getId() > 0) { return myEntity.getId(); } else { return super.generate(session, obj); } } } 3. my test case Pesquisa p = new Pesquisa(); // p.setPesquisaId(170200778L); if (p.getId() != null) em.merge(p); else em.persist(p); em.flush();