Ahoj,
odpovídám na zprávu z neděle, 17. září 2006,
kterou Petr Schreib napsal(a) v 13:38:41:
No, to jsem právě zkoušel. Napíše to:
java.lang.RuntimeException: javax.persistence.PersistenceException: Exception
[TOPLINK-7144] (Oracle TopLink Essentials - 2006.8 (Build 060908)):
oracle.toplink.essentials.exceptions.ValidationException
UncaughtExceptionHandler: Exception Description: SEQ_GEN_SEQUENCE: platform
HSQLPlatform doesn't support NativeSequence.
Přitom HSQLDB AUTOINCREMENT normálně umí.
Stačilo by, kdyby z ISERTu vynechal ten ID sloupec a HSQLDB si to tam
doplní.
Zkoušel jsem taky přidat anotaci:
@Column(name = "ID", nullable = false, insertable=false)
konkrétně jde o to insertable = false, v dokumentaci se píše:
(Optional) Whether the column is included in SQL INSERT statements generated
by the persistence provider.
Ale nemá to vůbec žádný vliv.
--------------------------- Původní zpráva ---------------------------
Odesilatel: Petr Schreib <[EMAIL PROTECTED]>
Předmět: JPA a autoincrement
Datum: 17. září 2006, 13:38:41 (GMT +0200)
Přílohy: <none>
msgid:[EMAIL PROTECTED]
P> Zkuste přidat k @Id ještě anotaci @GeneratedValue(strategy =
P> GenerationType.IDENTITY). Pokud autoincrementaci zajišťuje přímo
P> databáze, mělo by to stačit.
P> Petr
P> On 9/17/06, Tomáš Procházka <[EMAIL PROTECTED]> wrote:
>> Ahoj.
>>
>> Nevíte někdo, zda jde Java Persistance API donutit, aby používalo
>> autoincrementaci primárního klíče? Respektive to umí databáze sama,
>> problém, je že když provedu:
>>
>> EntityManager em = DataConn.getEM();
>> em.getTransaction().begin();
>>
>> Customers cust = new Customers();
>> cust.setType((short)0);
>> cust.setFirstname("Tomáš");
>> cust.setLastname("Procházka");
>> cust.setRc("811019/5148");
>>
>> em.persist(cust);
>> em.getTransaction().commit();
>>
>>
>> Tak TopLink vygeneruje:
>>
>> INSERT INTO CUSTOMERS (ID, TITLE, STREE, TYPE, CITY, DIC, ZIP, BNAME, STATE,
>> LASTNAME, PHONE, ICO, EMAIL, FIRSTNAME, OPNUM, RC, DATE_CREATE)
>> VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
>>
>> A já bych se potřeboval zbavit toho ID, co se tam snaží vnutit.
>>
>> Zkoušel jsem:
>>
>> @Id
>> @Column(name = "ID", nullable = false,insertable = false,unique=true)
>> private Integer id;
>>
>>
>> v definici entity a nepomohlo to :-(
>>
>>
>>
>> Datum: 11:44:06 17. září 2006
>> --
>> ---------------------------------------------------------------------
>> TomášProcházka
>>
>>
>> E-mail: [EMAIL PROTECTED]
>> WWW: http://atom.sf.cz
>> ICQ: 87147320
>> ---------------------------------------------------------------------
>>
>>
------------------------ Konec původní zprávy ------------------------
--
---------------------------------------------------------------------
Tomáš Procházka
E-mail: [EMAIL PROTECTED]
WWW: http://atom.sf.cz
ICQ: 87147320
---------------------------------------------------------------------