leandro_bortolotto 24 de jun. de 2010
Como utilizar/instanciar a interface: javax.persistence.spi.PersistenceUnitInfo?
partenon 28 de jun. de 2010
Voce pode chamar Dialect.getDialect(), que eh um Singleton e retorna o Dialect configurado para sua aplicacao. Isso resolve o problema?
http://simoes.org/docs/hibernate-2.1/api/net/sf/hibernate/dialect/Dialect.html#getDialect()
Se voce realmente precisa pegar o valor da propriedade hibernate.dialect, voce pode usar System.getProperty("hibernate.dialect");
leandro_bortolotto 28 de jun. de 2010
Bom dia…
Muito obrigado pela dica, vou fazer o teste e depois posto aqui se deu certo.
Se algo tão simples funcionar, vou ficar adimirado tanto com a facilidade quanto com o fato de não ter encontrado essa informação facilmente.
Mais uma vez, obrigado.
leandro_bortolotto 28 de jun. de 2010
Fiz o teste mas não funcionou no meu caso, tenho o seguinte trecho de código que funciona como quero:
Properties pro = new Properties ();
pro . setProperty ( "hibernate.dialect" , "org.hibernate.dialect.PostgreSQLDialect" );
Dialect dialect = Dialect . getDialect ( pro );
String select = dialect . getSequenceNextValString ( sequenceName );
Porém eu gostaria de deixar dinâmico o valor da propriedade “hibernate.dialect”, pegando direto do arquivo de configuração “persistence.xml”.
Já tentei:
System.getProperty("hibernate.dialect")
e
Dialect dialect = Dialect.getDialect();
porém nenhum deles funcionou.
Se tiverem alguma sugestão, agradeço.
partenon 28 de jun. de 2010
Que estranho. Confirmei ate na documentacao oficial, e isso deveria funcionar
http://docs.jboss.org/hibernate/stable/core/api/org/hibernate/dialect/Dialect.html#Dialect()
Mas em todo caso, tente assim:
Session session = (Session) em.getDelegate();
SessionFactoryImplementor sf = (SessionFactoryImplementor) session.getSessionFactory();
sf.getDialect();
Nao tenho certeza se os casts sao possiveis, pq nao lembro de cabeca qual a implementacao de SessionFactory para JPA, mas acho que eh SessionFactoryImpl.
http://docs.jboss.org/hibernate/stable/core/api/org/hibernate/engine/SessionFactoryImplementor.html
leandro_bortolotto 30 de jun. de 2010
Também não deu certo, vou deixar fixo no código e continuar o desenvolvimento, depois vejo isso.
Obrigado pela ajuda.
Abs
partenon 1 de jul. de 2010
Eu testei aqui, e quando se usa JPA as propriedades nao ficam em System.properties. Mas o codigo abaixo funciona:
EntityManager em = factory . createEntityManager ();
Session session = ( Session ) em . getDelegate ();
SessionFactoryImplementor sf = ( SessionFactoryImplementor ) session . getSessionFactory ();
logger . info ( "Dialect usado: " + sf . getDialect ());
em . close ();
Ele imprime: