-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 4 posts ] 
Author Message
 Post subject: EntityManager ohne persistance.xml?
PostPosted: Mon Apr 21, 2008 8:22 am 
Newbie

Joined: Mon Apr 21, 2008 7:54 am
Posts: 2
Hallo Leute,

Ich habe eine winzige(?) Frage, ich versuche für ein paar Tests die Properties die in der persistance.xml Datei gesetzt sind programatisch nachzubilden. (Es ist mir bewusst das es nicht wirklich eine Hibernatefrage ist, jetzt wo ich's nochmal durchlese)

Allerdings weiss ich nicht wie/wo ich den provider Tag unterbringe

<provider>org.hibernate.ejb.HibernatePersistence</provider>

Code:
        Properties p = new Properties();
        try {

            p.put("hibernate.connection.driver_class", "org.hsqldb.jdbcDriver");
            p.put("hibernate.dialect", "org.hibernate.dialect.HSQLDialect");
            p.put("hibernate.hbm2ddl.auto", "create-drop");
            p.put("hibernate.show_sql", "true");
            p.put("hibernate.connection.username", "sa");
            p.put("hibernate.connection.password", "");
            p.put("javax.persistence.provider", "org.hibernate.ejb.HibernatePersistence");
            Class.forName("org.hsqldb.jdbcDriver");
            connection = DriverManager.getConnection("jdbc:hsqldb:mem:unit-testing-jpa", p);
        } catch (Exception ex) {
            ex.printStackTrace();
            fail("Exception during HSQL database startup.");
        }
        try {
            // <persistence-unit name="testPU" transaction-type="RESOURCE_LOCAL">

            Properties p2 = new Properties();
            p2.put("name", "testPU");
            p2.put("transaction-type", "RESOURCE_LOCAL");
            emFactory = Persistence.createEntityManagerFactory("testPU", p2);
            em = emFactory.createEntityManager();

        } catch (Exception ex) {
            ex.printStackTrace();
            fail("Exception during JPA EntityManager instanciation.");
        }


Wenn mich da jemand in die richtige Richtung weisen könnte wär das super. Z.Z. bekomm ich nämlich nur
javax.persistence.PersistenceException: No Persistence provider for EntityManager named
beim createEntityManagerFactory() Aufruf. Das ganze funktioniert wunderbar wenn die persistance.xml vorhanden ist

Code:
<?xml version="1.0" encoding="UTF-8" ?>

<!-- Persistence Descriptor zur Konfiguration des Frameworks -->
<persistence>

   <!-- Symbolischer Name der Persistenz-Unit und der zu verwendende
      Transaktionstyp; Standard ist 'JTA'  -->
   <persistence-unit name="testPU" transaction-type="RESOURCE_LOCAL">

      <!-- Zu verwendende Service Provider Implementierung -->
   <provider>org.hibernate.ejb.HibernatePersistence</provider>

    <properties>
        <property name="hibernate.connection.url" value="jdbc:hsqldb:mem:unit-testing-jpa"/>
        <property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver"/>
        <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
        <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
        <property name="hibernate.connection.username" value="sa"/>
        <property name="hibernate.connection.password" value=""/>
        <property name="hibernate.show_sql" value="true"/>
    </properties>

   </persistence-unit>

</persistence>



Hoffe mir kann jemand helfen, danke schonmal


Top
 Profile  
 
 Post subject:
PostPosted: Mon Apr 21, 2008 4:31 pm 
Expert
Expert

Joined: Tue Nov 23, 2004 7:00 pm
Posts: 570
Location: mostly Frankfurt Germany
Evt. musst Du eine minimale XML liefern.

Ich würde aber noch mal in das test package des Hibernate Entity manager gucken bzw. in den Source code.

_________________
Best Regards
Sebastian
---
Training for Hibernate and Java Persistence
Tutorials for Hibernate, Spring, EJB, JSF...
eBook: Hibernate 3 - DeveloperGuide
Paper book: Hibernate 3 - Das Praxisbuch
http://www.laliluna.de


Top
 Profile  
 
 Post subject:
PostPosted: Tue Apr 22, 2008 5:20 am 
Newbie

Joined: Mon Apr 21, 2008 7:54 am
Posts: 2
Ich habe im Sourcecode etwas gestöbert, anscheinend durchläuft er die XMl Datei, hier scheint die interessante Stelle zu sein:

Code:
if ( tag.equals( "persistence-unit" ) ) {
               PersistenceMetadata metadata = parsePersistenceUnit( element );
               //override properties of metadata if needed
               if ( overrides.containsKey( HibernatePersistence.PROVIDER ) ) {
                  String provider = (String) overrides.get( HibernatePersistence.PROVIDER );
                  metadata.setProvider( provider );
               }


Was bedeutet das er garnicht überprüft ob ich ihm in der Map die Parameter angegeben sind, weil die XML die er durchläuft ja nicht existiert... Ein Umstand der sich gerade bestätigt hat als ich kompletten Müll in den Providertag schrieb, er aber das genommen hat was ich oben in meiner HashMap angegeben habe...

Gibt es denn wirklich keine Möglichkeit die XML ganz wegzulassen? :-/

Danke für die Hilfe

(Das mit dem bewerten ist komisch, habe jetzt angeklickt das es das Problem ncht gelöst hat, aber jetzt steht da das ich es als nicht hilfreich bewertet habe. Bisschen irritierend)


Top
 Profile  
 
 Post subject:
PostPosted: Fri Apr 25, 2008 11:09 am 
Regular
Regular

Joined: Thu Apr 14, 2005 10:39 am
Posts: 115
Hi, bin auch gerade auf der Suche die Konfigurationsdateien los zu werden und soeben für Hibernate-Annotations fündig geworden.

Generell ist die Standardeinstellung, dass die xml-files dem Java-Code vorgezogen werden, falls beide vorhanden sind.

Bei Hibernate-Annotations gibt es eine Property die dies zumindest für die Mapping-Einträge umkehrt:

Code:
.setProperty("hibernate.mapping.precedence", "class");


Etwas ähnliches sollte es auch bei EJB3 geben.

Allerdings bezieht sich das leider nur auf das Mapping.

Den Rest kannst Du Dir sparen, indem Du auf configure verzichtest und gleich buildSessionFactory() aufrufst. (Zumindest klappt dies so bei den Hibernate-Annotations.)

Viele Grüße Michael


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 4 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.