Como o JPA decide qual estrategia vai ser tomada?

Galera como o JPA decide qual estrategia vai ser tomada quando utilizamos AUTO?

@GeneratedValue(strategy = GenerationType.AUTO)

tks 0/

Eu entendi o que você quis dizer, mas não posso deixar de fazer uma observação: a especificação JPA não decide. Quem decide é o provider com base no banco de dados utilizado. Alguns bancos suportam sequences, outros não. Acho que esse é o único tipo problemático, já que os outros (table e identity) funcionam em todos.

http://docs.oracle.com/javaee/7/api/javax/persistence/GenerationType.html#AUTO

4 curtidas

Examente @lvbarbosa, permita-me adicionar mais conteúdo:

A estratégia que ele utiliza é pegar o tipo do atributo identificador, ex:

public Long id;
public UUID id;
....

Se o tipo for UUID, o Hibernate irá usar um identificador UUID .

Se o tipo for numérico (Long, Integer, etc…), o Hibernate irá usar o IdGeneratorStrategyInterpreter para resolver a estratégia do gerador do identificador.

O IdGeneratorStrategyInterpreter tem duas implementações:

FallbackInterpreter e LegacyFallbackInterpreter, se você quiser se especializar no assunto você consegue a informação na documentação do provider.

https://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/Hibernate_User_Guide.html#identifiers-generators-auto

2 curtidas

Opa, obrigado galera pela força. 0/