[JAVA] Fügen Sie @GeneratedValue nicht unnötig hinzu, wenn Sie eine Entität mit JPA erstellen

Nun, es ist nur ein Memo, also dachte ich, ich würde es auf Twitter twittern, aber ich wage es, es mit Qitta aufzunehmen.

JPAs praktische Übungen, Beispiele, Erklärungsseiten usw. Beim Schreiben von Code an verschiedenen Stellen gibt es viele Auslassungsstellen, an denen die Erklärung weggelassen wird, da die Entitätseinstellung durch Kopieren und Einfügen vorgenommen wird.

Angenommen, Sie haben den folgenden Beispielcode


@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;

    ...
}

Frage: Funktioniert das alleine?

Richtige Antwort: Funktioniert nicht

Grund: Es funktioniert nur, wenn der Schlüssel in der Datenbank definiert ist. In MySQL funktioniert dies beispielsweise nur, wenn Sie AUTO_INCREMENT usw. im Schlüssel festlegen. ** ** ** Wenn Sie also eine Tabelle verwenden, die UUID usw. aus Java generiert und als Schlüssel verwendet, entfernen Sie die Annotation @GeneratedValue.

Kontaktieren Sie uns nicht, indem Sie sich Websites ansehen, die dies nicht erklären. .. ..

Fazit: Wenn Sie @GeneratedValue verwenden, legen Sie auch die Datenbank fest. Wenn nicht, entfernen Sie es.

Recommended Posts

Fügen Sie @GeneratedValue nicht unnötig hinzu, wenn Sie eine Entität mit JPA erstellen
Grobe Prozedur verbalisierte Ausgabe beim Erstellen einer App mit Rails
Zusammenfassung der ersten Arbeiten beim Erstellen einer App mit Rails
So geben Sie db beim Erstellen einer App mit Rails an
Informationen zum Erstellen von Apps mit Springboot