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
______________________________________________________________________