Domanda

Devo testare alcune cose su un progetto che è stato sviluppato da altri, ma è nuovo per me. Stanno usando Hibernate come implementazione dell'APP.

Ho una macchina virtuale in cui tutto è impostato, ma quando voglio avviare qualsiasi Testclient (piccoli programmi console, nessun Unittesting). Ottengo sempre lo stesso errore.

Exception in thread "main" javax.persistence.PersistenceException: org.hibernate.HibernateException: Hibernate Dialect must be explicitly set
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:698)
    at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:121)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:51)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:33)
    ...    
Caused by: org.hibernate.HibernateException: Hibernate Dialect must be explicitly set
    at org.hibernate.dialect.DialectFactory.determineDialect(DialectFactory.java:57)
    at org.hibernate.dialect.DialectFactory.buildDialect(DialectFactory.java:39)
    at org.hibernate.cfg.SettingsFactory.determineDialect(SettingsFactory.java:409)
    at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:119)
    at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2006)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1289)
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:691)
    ... 7 more

La struttura del progetto è simile a questa. Stranamente ho già fatto funzionare questa cosa (prima delle mie vacanze estive.

|-- bin
|-- lib
|-- rsc
|   |-- META-INF
|   |   `-- persistence.xml
|-- src
|   |-- org 
|   |    | ... all sourcecode below 
`-- target

Ho provato a restringere il problema, quindi ho eliminato l'intera cartella META-INF. Ancora lo stesso errore. Non era quello che mi aspettavo e mi ha portato a credere che persistence.xml non si trova affatto. Non so perché abbiano inserito META-INF nella cartella rsc (come ho già detto, non è il mio progetto) ma quando lo metto nella cartella radice o nella cartella src l'errore rimane.

Come posso assicurarmi che persistence.xml sia stato trovato? Esiste una documentazione in cui inserire META-INF. (E perché questo errore è così fuorviante?)

È stato utile?

Soluzione

Dipende dal processo di compilazione in cui finiranno i file / jar compilati, quando si avvia l'app di test. Sono abbastanza sicuro, non inizierai dalla cartella src. Otterrai una cartella di build o test da cui eseguire l'app. Quindi la struttura delle cartelle dovrebbe essere in genere così:

|- build
   |- classes
      |- org (packages)
         |- ...
      |- META-INF
         |- persistence.xml
         |- ... (other config files)

Puoi anche controllare questo link .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top