Mapear com uma unica anotação autoincremento SQLServer e Oracle[RESOLVIDO]

1 resposta
E

Galera jah tentei de tudo e vim pedir ajuda para vocês.

Como eu posso fazer em uma unica anotação um mapeanto de um chave incrementavel tanto para o Oracle quanto para SQLServer? Sendo que o Oracle trabalha com sequence e o SQLServer trabalha com IDENTITY. Ouvi falar que com JPA usando toplink tem como fazer isso, mas mesmo assim nao consegui.

Peço a ajuda de vcs.

Agradeço desje já!

1 Resposta

E

ahuahuahuahuauh tava viajando nem preciso fazer essas doidera ai… seguinte para quem precisar ah solução:

@Id   
	@SequenceGenerator( name = "SEQ", sequenceName = "NOME_DO_SEU_SEQUENCE", allocationSize = 1 ) //oracle
	@GeneratedValue( strategy = GenerationType.AUTO, generator = "SEQ" )
	@Column(name = "ID")
    private Integer id;

Ah anotação AUTO serve tanto para um campo IDENTITY quanto para um campo SEQUENCE, portanto quando subir sua aplicação e o seu sistema verfificar que vc estah usando um dialeto de banco que possui um campo IDENTITY ele irá usar por baixo dos panos GenerationType.IDENTITY ignorando o sequence e quando for um dialeto que usa SEQUENCE ele irá usar a anotação @SequenceGenerator através da propriedade generator = “SEQ” ignorando eh claro o IDENTITY. Mesmo esquema acontece com os arquivo hbm, para vc mapear por hbm.xml independendo se for sequence ou identity vc terah que fazer assim:

<id name="seuBeanId" column="SEU_ID">
			<generator class="native">
				<param name="sequence">NOME_DO_SEU_SEQUENCE</param>
			</generator> 
		</id>
Criado 10 de junho de 2009
Ultima resposta 10 de jun. de 2009
Respostas 1
Participantes 1