Dobry den,

Tiez sa mi na Hibernate nepacilo mnozstovo jar-ov ale velkostou su porovnatelne s Toplinkom (3,5 MB vs 2,2 MB).

Ja som pouzil na perzistenciu Spring 2.0 + Hibernate / Toplink + HSQL / MySQL a s autoincrementom som nemal problemy pri ani jednej kombinacii.

ID vyzeralo takto:

@Entity
public class Employee {
@Id
   @GeneratedValue(strategy = GenerationType.TABLE)
   private long id;
...

GenerationType.TABLE - je portable nad vsetkymi databazami.

Pre vas nezaujimavy Spring config takto:

<bean class="org.springframework.orm.jpa.vendor.TopLinkJpaVendorAdapter"> <!-- <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> -->
              <property name="showSql" value="true"/>
              <property name="generateDdl" value="true"/>
<property name="databasePlatform" value="oracle.toplink.essentials.platform.database.HSQLPlatform"/> </bean> Zaujimava je ale ta properta 'generateDdl' ktora ak 'true' tak vygeneruje DB schemu nanovo. Ak nepouzivate Spring tak to spravi java2db.

Pisem to preto lebo mozno je chyba niekde v scheme kedze chcete pouzivat Identity a vasa exception

'Exception Description: SEQ_GEN_SEQUENCE ...'

vravi ze sa robi nieco so Sequence.

Takze by som pouzil GenerationType.TABLE a schemu si pregeneroval nanovo. JPA je pomerne nova, takze by som sa uistil ze mam najnovsi toplink-essentials.jar a tiez HSQL driver (hsqldb.jar) - mozno niesu u vas kompatibilne.

Ja by som tomu Toplinku sancu dal :-)

Inac ako vyzara vas persistence.xml?

Martin Krajci


Tomáš Procházka wrote:
Ahoj,
odpovídám na zprávu z neděle, 17. září 2006,
kterou Petr Schreib napsal(a) v 13:38:41:

   Hibernate funguje dle očekávání, TopLink bude nejspíše k ničemu,
ostatně mám podobné zkušenosti se vším od Oraclu. Jen mě vadí, že
Hibernate je 3x větší a je to hromada jarů, kdo se v tom pak má
orientovat.

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



______________________________________________________________________
This email has been scanned by the MessageLabs Email Security System.
For more information please visit http://www.messagelabs.com/email ______________________________________________________________________

Odpovedet emailem