Не могу создать EntityManager - PullRequest
       21

Не могу создать EntityManager

0 голосов
/ 14 апреля 2010

плохо знакомы с EJB3, пожалуйста, помогите / объясните.

Внутри сессионного компонента я объявляю EntityManager следующим образом

@PersistenceContext(unitName="ScheduleUnit")
private EntityManager em;

и это работает. Но когда я делаю это

private EntityManager em;
private EntityManagerFactory emf;

public void myFunction() {
  emf = Persistence.createEntityManagerFactory("ScheduleUnit");
  em = emf.createEntityManager();
}

Я получаю следующую ошибку:

A JDBC Driver or DataSource class name must be specified in the ConnectionDriverName property

Ответы [ 2 ]

0 голосов
/ 15 апреля 2010

Я думаю, EntityManagerFactory не может найти источник данных, указанный в вашем модуле персистентности. Что касается Glassfish, эта информация хранится в файле sun-resources.xml . Это приложение j2ee? Если это так, то лучше использовать внедрение зависимостей с аннотацией @ PersistenceContext (как сказал Паскаль).

Также вы можете попробовать использовать метод createEntityManagerFactory (String persistenceUnitName, Свойства карты) и указать "ConnectionDriverName" свойство в свойства карта:

private EntityManager em;
private EntityManagerFactory emf;

public void myFunction() {
  HashMap<String, String> properties = new HashMap<String, String>();
  properties.put("ConnectionDriverName", "org.postgresql.Driver");  //as for Postgres
  emf = Persistence.createEntityManagerFactory("ScheduleUnit", properties);
  em = emf.createEntityManager();
}
0 голосов
/ 14 апреля 2010

Неясно, где вы используете второй фрагмент кода (это в EJB? Если да, вы не должны использовать EntityManagerFactory в управляемой среде, такой как контейнер EJB). Не могли бы вы уточнить?

Также, пожалуйста, покажите свой persistence.xml (сообщение об ошибке об этом файле не содержит необходимой информации).

...