OpenJPA создает EntityManager в коде без persistence.xml со свойствами - PullRequest
3 голосов
/ 04 октября 2011

Мне нужно создать EntityManager в коде без persistence.xml ... У меня



props.put("openjpa.ConnectionURL", "jdbc:sqlserver://databasehost:3306; DatabaseName=dbname; selectMethod=cursor;create=true");
    props.put("openjpa.ConnectionDriverName","com.mysql.jdbc.Driver");
    props.put("openjpa.ConnectionUserName", "dbname");
    props.put("openjpa.ConnectionPassword", "password");
    props.put("openjpa.jdbc.SynchronizeMappings", "buildSchema");
    props.put("openjpa.Log", "DefaultLevel=WARN, Runtime=INFO, Tool=INFO, SQL=TRACE");
    props.put("openjpa.RuntimeUnenhancedClasses", "supported");

    EntityManagerFactory factory = Persistence.createEntityManagerFactory("wp");
    em = factory.createEntityManager(props);

.. и когда em = factory.createEntityManager (props) вызывается, я получаю:


javax.persistence.PersistenceException: No persistence providers available for "wp" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:182)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:72)
    at dao.wp.WP_EMH.getCurrentEntityManager(WP_EMH.java:27)

Я понимаю, что в файле persistence.xml, представленном тегом

, нет упоминания о чем-либо

PROVIDER- org.apache.openjpa.persistence.PersistenceProviderImpl - / PROVIDER

Как мне добавить это в Свойства? Или как это решить? И второй вопрос: в persistence.xml добавлены классы сущностей. Как решить это с помощью свойств?

спасибо

1 Ответ

3 голосов
/ 04 октября 2011

Способ

javax.persistence.Persistence.createEntityManagerFactory(
    String persistenceUnitName);

ожидает настройки от persistence.xml. Попробуйте указать карту недвижимости на

javax.persistence.Persistence.createEntityManagerFactory(
    String persistenceUnitName, Map properties);

Очевидно, что набор свойств неполный; например, отсутствуют постоянные имена классов:

properties.put("openjpa.MetaDataFactory", "jpa(Types=FQN.class1;FQN.class2;...)");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...