Olá!
O cenário é o seguinte:
Tenho uma entidade no banco que possui uma chave sequencial gerada automaticamente. O repositório dessa entidade tem os métodos save e findById. A entidade está mapeado usanso JPA + Hibernate. Exemplo:
@Entity
@Table(name = "entidade")
@SequenceGenerator(name = "***" ,sequenceName = "***", allocationSize=1)
public class Entidade {
@Id
@GeneratedValue(strategy=GenerationType.AUTO, generator="***")
private Integer id;
...
}
Problema:
Na classe de teste, gostaria de testar o save e em seguida o findById (nesta ordem), pois o Hibernate seta automaticamente o Id gerado na minha entidade. Assim, se faço um entidade.getId() eu tenho o Id que acabou de ser gerado pelo banco.
Assim, no próximo teste, gostaria fazer a busca por esse Id.
Exemplo:
private Entidade entidade = new Entidade("TESTE");
@Test
public void shouldSave(){
repositorio.save(entidade);
System.out.println("Gerado: " + entidade.getId()); // Dá certo, imprime o Id gerado
}
@Test
public void shouldFindById() throws Exception {
System.out.println("findById: " +entidade.getId()); //imprime null
assertNotNull(repositorio.findById(id));
}
Já tentei gravar em int, forçar com setId() no shouldSave() e nada.
Valeu!