Sequence [Resolvido]

Olá pessoal,

Notei que algumas pessoas utilizam a anotation @SequenceGenerator e outras não. No meu caso não funcionou sem ela.

Alguém sabe me explicar porque utilizá-la? Mesmo por que eu já estou mapeando a propriedade com @GeneratedValue.

Vlw


@SequenceGenerator(name = "SEQ_USUARIO", sequenceName = "SEQ_USUARIO", allocationSize=1)
public class Usuario implements Serializable {
	
	@Id
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_USUARIO")   
	private Integer id;

Colega,

O @SequenceGenerator, como o próprio nome já diz, usa a tabela sequence do banco de dados. Nem todo banco de dados tem suporte a sequence (ex.: mySQL não tem e Postgres tem), então, para tornar sua aplicação portável entre banco de dados (ou pelo menos facilitar sua migração), utilize @TableGenerator, que se baseia em uma tabela criada por você para guardar os sequenciais das entidades.

Abraço

Isso faz o Hibernate/JPA gerar as sequences pra vc.

O @GeneratedValue apenas indica que esse campo terá seu valor resolvido de forma automática.

Mais uma vez, muito obrigado amigos do GUJ!

Abraços!