Hibernate: klasa z jednym polem

0

Witam,

Dzisiaj przypadkowo złapałem taki problem,
Majac klase A ktora miała tylko jedno pole powiedzmy Id
oraz majac tabele ktora odwzorowuje ta klase czyli tabela "a" o polu id INTEGER PRIMARY KEY
i i plik mapujacy powiedzmy a.hbm.xml

<hibernate-mapping>
<class name="A">

    <id name="id" column="Id">
        <generator class="native"/>
    </id>
</class>
</hibernate-mapping>

powodowalo dziwne błędy postaci:

May 5, 2010 2:03:10 PM org.hibernate.util.JDBCExceptionReporter logExceptions
SEVERE: near ")": syntax error
Exception in thread "main" org.hibernate.exception.GenericJDBCException: could not insert: [baza.A]
        at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)

Problem rozwiazało dodanie jakiegokolowiek pola do A np:
<property name="nazwa" column="name" type="string" />

Czy może ktoś wytłumaczyć czemu nie mogę zrobić tabeli tylko z "id "?

0

Problem leży po stronie pomysłu. Klasa z jednym polem identyfikatorem natywnym nigdy nie będzie działała w Hibernate ponieważ przy insercie powstanie coś w stylu insert into X () value (?) i jak to mówią na pochyłe drzewo i Salomon nie naleje. Zresztą włącz logowanie zapytań i zobacz co otrzymasz.

0

Koziolek:Dzieki wielkie
Myślałem ze to generator natywny zadziała wtedy jak tego id nie podam ... a w kodzie podawałem więc liczyłem , że odpali on normalnego inserta.
Z drugiej strony jak zrobić własnie taki identyfikator w hibernate który jeżeli jest podana wartość to ją wstawi , a jak nie ma to wezmie SELECT max(id) FROM tab; i doda do tego jeden ?

0

ujek googel "Hibernate Custom Sequence Generator".

1 użytkowników online, w tym zalogowanych: 0, gości: 1