Pergunta

Eu tenho que testar algumas coisas em um projeto que foi desenvolvido por outros, mas é novo para mim. Eles estão usando Hibernate como uma implementação JPA.

Eu tenho uma máquina virtual em que tudo está configurado, mas quando eu quero começar qualquer TestClient (pequenos programas de console, não UnitTesting). Eu sempre obter o mesmo erro.

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

A estrutura do projeto se parece com isso. Estranhamente eu já tinha essa coisa de execução (antes de meus summerholdays.

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

Eu tentei reduzir o problema, portanto, eu apaguei toda a pasta META-INF. Ainda o mesmo erro. Isso não era o que eu esperava e me levou a acreditar que persistence.xml não é encontrado em tudo. Eu não sei por que eles colocaram META-INF na pasta rsc (como já referi, não é meu projeto), mas quando eu colocá-lo na pasta raiz ou na pasta src os restos de erro.

Como posso ter certeza de que persistence.xml foi encontrado? Existe alguma documentação onde META-INF deve ser colocado. (E por que isso é errormessage tão enganosa?)

Foi útil?

Solução

Depende do seu processo de construção onde os arquivos compilados / jar vai acabar, ao iniciar seu aplicativo de teste. Tenho certeza, você não vai começar a partir de src-pasta. Você vai ter alguma pasta de construção ou de teste para executar o seu aplicativo a partir. Em seguida, a estrutura da pasta normalmente deve ser assim:

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

Você também pode verificar este ligação .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top