[JAVA] N'ajoutez pas inutilement @GeneratedValue lors de la création d'une entité avec JPA

Eh bien, ce n'est qu'un mémo, alors j'ai pensé le tweeter sur Twitter, mais j'ose l'enregistrer avec qitta.

Lors de l'écriture de code à divers endroits tels que les applications pratiques de JPA, les exemples, les sites d'explication, etc., il existe de nombreux sites d'omission où l'explication est manquante car le paramètre Entité est effectué par copier-coller.

Par exemple, disons que vous disposez de l'exemple de code suivant


@Entity
@Table(name="users")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @Column(name="name")
    private String name;

    @Column(name="password")
    private String password;

    ...
}

Question: Cela fonctionne-t-il seul?

Bonne réponse: ne fonctionne pas

Raison: cela ne fonctionne que si la clé est définie sur la base de données. Par exemple, dans MySQL, cela ne fonctionnera que si vous définissez AUTO_INCREMENT etc. dans la clé. ** ** Donc, si vous utilisez une table qui génère l'UUID etc. à partir de java et l'utilise comme clé, supprimez l'annotation @GeneratedValue.

Ne nous contactez pas en consultant des sites qui n'expliquent pas cela. .. ..

Conclusion: Lorsque vous utilisez @GeneratedValue, définissez également la base de données. Sinon, supprimez-le.

Recommended Posts

N'ajoutez pas inutilement @GeneratedValue lors de la création d'une entité avec JPA
Sortie verbalisée de procédure approximative lors de la création d'une application avec Rails
Résumé du travail initial lors de la création d'une application avec Rails
Comment spécifier la base de données lors de la création d'une application avec des rails
À propos de la création d'applications avec Springboot