Hubivan
Mitglied
Ausgangs-Situation:
Ich habe eine Datenbanktabelle mit einer Spalte die eine ID für jeden Datensatz enthält.
Für die ID-Spalte ist eine Sequence zum hochzählen der ID bereitgestellt.
Bei der Datenbank handelt es sich um eine Oracle Datenbank, die Sequenz muss bei einem herkömmliche Insert also erst extra mit angegeben werden, damit sie verwendet wird.
Frage: Wenn ich jetzt in meinem auf EJB 3.0 basierenden Programm mitels Persistence einen Datensatz in die Tabelle einfüge, muss ich dann die Sequence auch explizit ansprechen und die nächste ID zu erhalten, oder erledigt das die JPA für mich?
Bei einem normalen Insert mit Persistence schreibe ich ja nicht mehr explizit ein SQL Statement.
UPDATE: Ich hab grad folgendes Beispiel gefunden, welches meine Frage schon so gut wie beantwortet:
Wenn ich das richtig verstehe, dann muss ich bei sequenceName="CUST_SEQ" den Namen meiner Sequence in der Oracle Datenbank angeben oder? Also im Beispiel CUST_SEQ?
Ich habe eine Datenbanktabelle mit einer Spalte die eine ID für jeden Datensatz enthält.
Für die ID-Spalte ist eine Sequence zum hochzählen der ID bereitgestellt.
Bei der Datenbank handelt es sich um eine Oracle Datenbank, die Sequenz muss bei einem herkömmliche Insert also erst extra mit angegeben werden, damit sie verwendet wird.
Frage: Wenn ich jetzt in meinem auf EJB 3.0 basierenden Programm mitels Persistence einen Datensatz in die Tabelle einfüge, muss ich dann die Sequence auch explizit ansprechen und die nächste ID zu erhalten, oder erledigt das die JPA für mich?
Bei einem normalen Insert mit Persistence schreibe ich ja nicht mehr explizit ein SQL Statement.
UPDATE: Ich hab grad folgendes Beispiel gefunden, welches meine Frage schon so gut wie beantwortet:
Code:
...
@Entity
@Table(name="CUSTOMER_TABLE")
@SequenceGenerator(name="CUSTOMER_SEQUENCE", sequenceName="CUST_SEQ")
pbulic class Customer implements java.io.Serializable {
private long id;
...
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="CUSTOMER_SEQUENCE")
public long getId() {
return id
}
...
}
Wenn ich das richtig verstehe, dann muss ich bei sequenceName="CUST_SEQ" den Namen meiner Sequence in der Oracle Datenbank angeben oder? Also im Beispiel CUST_SEQ?
Zuletzt bearbeitet: