Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Problema con Hibernate

  1. #1
    Utente di HTML.it L'avatar di Pierock
    Registrato dal
    Dec 2008
    Messaggi
    102

    Problema con Hibernate

    Salve, sto cercando di comprendere il funzionamento di Hibernate, in particolare mi serve utilizzarlo in un'applicazione java... documentandomi qua e la ne ho compreso i principi, ma proprio non riesco a farlo andare..
    in particolare...

    Sono riuscito, dopo non poche peripezie a settare il file hibernate.cfg.xml per consentire l'accesso al mio db MySql, ed ho creato un opportuno file di mapping per la corrispondenza di una classe Entry ad un particolare tabella...
    Fin qui mi è sembrato abbastanza chiaro (o almeno a questo punto)...
    ora però risolto i miei mille problemi con la creazione della sessione... mi ritrovo ad impazzire con un altro problema, ovvero, al momento del (tentato) inserimento nel bd, ottengo questo errore:
    codice:
    Exception in thread "main" org.hibernate.HibernateException: The database returned no natively generated identity value
    ho cercato on-line, ma non sono riuscito a cavarne molto...

    per quanto riguarda il codice...
    ottengo l'errore descritto anche seguendo "pari-pari" questo tutoria.
    http://www.mastertheboss.com/quickst...l-with-eclipse

    ...
    seguendo le impostazioni descritte, ottenevo dapprima un errore in quanto non era presente una tabella Person, di conseguenza ho creato la tabella in questo modo:
    codice:
    create table Person (
    NAME varchar(16),
    SURNAME varchar(16),
    ADDRESS varchar(16));
    che dovrebbe rispettare il mapping... e subito dopo commentato il rigo:
    codice:
    <property name="hibernate.hbm2ddl.auto">create</property>
    che da quanto ho capito (correggetemi se sbaglio) dovrebbe ri-creare lo schema (interpretando il mapping) con conseguente cancellazione dei dati presenti nella tabella.
    Dato che il mio obiettivo è quello di poter inserire e leggere dati da bd senza intaccare lo schema.

    vi ringrazio in anticipo.

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    147
    Se stai usando hibernate in un applicazione locale,dammi la tua email che ti invio un guida che seguita pari pari e impossibile da sbagliare

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Il problema principale è come è costruita quella tabella.
    JPA (ovvero Hibernate nel tuo caso) costringe il programmatore ad utilizzare tabelle con chiave primaria. Tu non hai settato da nessuna parte la chiave primaria di quella tabella (ho guardato solo l'SQL del CREATE TABLE che hai postato). Non sapendo, poi, come hai creato la classe Entity, non posso sapere quali cose stai chiedendo al DB per quanto riguarda l'ID dell'entity (in quasi tutti i tutorial che ho visto on-line mettono un campo ID auto-generato usando l'annotazione @GeneratedValue, se l'hai fatto anche tu stai chiedendo al DB di autogenerare il valore della chiave, che per iniciso non esiste nella tua tabella, e il DB non sa come comportarsi).

    I miei suggerimenti sono:

    1) Ricostruisci quella tabella aggiungendo la chiave primaria (in tutti i DB degni di questo nome, le tabelle hanno una chiave primaria)
    2) Togli di mezzo l'eventuale annotazione @GeneratedValue dall'ID della Entity... se non è un normalissimo contatore è molto meglio gestirla separatamente via codice.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Utente di HTML.it L'avatar di Pierock
    Registrato dal
    Dec 2008
    Messaggi
    102
    Salve ragazzi,
    vi ringrazio per il vostro aiuto... mi scuso per il ritardo della mia risposta, ma ho visto il post solo ora...(a volte nn mi arrivano le mail da forum..boh)

    @lele:
    Si, il problema era proprio li... in sostanza la tabella non prevedeva una chiave primaria, ed in aggiunta non vi era una perfetta corrispondenza con la classe entity, infatti in quest'ultima compariva un campo in più, l' ID... e nel file di mapping veniva specificato che proprio quest'ultimo dovesse essere la chiave..
    quindi non c'era una corretta corrispondenza tra campi.
    Non me ne sono accorto subito perchè stavo cercando da un po' di tempo di far funzionare il jar di un progetto con delle classe Entity creare per Hibernate (che quindi si da per scontato siano funzionanti) .. non riuscendo a venirne a capo ho cercato qualche tutorial per capire il necessario su i file di configurazione... quindi badavo più a quello.. poi ho notato che nell'esempio specifico erano sbagliate le classi .. :s

    @gianpuffo
    grazie mille... mi farebbe davvero piacere dare un'occhiata al documento...
    provo a scriverti la mail in un messaggio privato....se ci riesco... altrimenti te la scrivo qui...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.