2012-05-30 4 views
0

Я хотел выполнить некоторую запланированную работу JDBC в компоненте.Использование EntityManager и DataSource вместе в LocalBean

И у меня есть.

Internal Exception: java.sql.SQLException: Error in allocating a connection. 
Cause: java.lang.IllegalStateException: Local transaction already has 1 non-XA Resource: 
cannot add more resources. 
Error Code: 0 
@LocalBean @Stateless 
class MyBean { 

    public void doJPA() { 
    } 

    @Schedule 
    public void doJDBC() { 
    } 

    @PersistentContext 
    EntityManager entityManager; 

    @Resource 
    DataSource dataSource; 
} 

ли я сделать что-нибудь не так?

Должен ли я просто разделить фасоль?

спасибо.

+2

Зачем вам нужен DataSource? Недостаточно EntityManager? – perissf

+0

Cuz, как аннотированный, мне нужно выполнить пакетное задание, которое не подходит для JPA, например, обновление целых строк таблицы. –

ответ

1

Если вы используете тот же источник данных, что и JPA, сервер должен предоставить вам такое же соединение, поэтому вы не должны получать эту ошибку. Используете ли вы другой источник данных?

Вы также можете получить соединение JDBC с вашего EntityManager с помощью Unwrap()

Зее http://wiki.eclipse.org/EclipseLink/Examples/JPA/EMAPI#Getting_a_JDBC_Connection_from_an_EntityManager

+0

Если DataSource вводится, сервер будет предоставлять новое соединение каждый раз. –

+0

Это тот же ресурс jdbc. Метод 'unwrap (T)' является специфичным для провайдера, не так ли? –

Смежные вопросы