小编Alb*_*ura的帖子

为什么具有分离数据源的不同持久性单元会查询相同的数据源?

我正在开发一个需要访问两个不同数据库服务器(H2和Oracle)的webapp.容器是Apache Tomee 1.5.1,我使用Java EE堆栈,其中包含库(JSF,JPA,CDI,EJB等).

我正在尝试在XA事务中使用两个实体管理器从Oracle数据库中提取数据并在转换后将其保留在H2中,但无论我使用的实体管理器如何,所有查询都是针对H2数据库执行的.有帮助吗?

编辑:我发现,如果我尝试以相反的顺序访问实体管理器,它们的行为是相同的,但访问Oracle.即:实体经理留在第一个访问的数据库.

发生这种情况的EJB(service.getFoo()从JSF 调用):

@Named
@Stateless
public class Service {
    @Inject
    @OracleDatabase
    private EntityManager emOracle;

    @Inject
    @H2Database
    private EntityManager emH2;

    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public List<Foo> getFoo() {
        TypedQuery<Foo> q = emH2.createQuery(
                "SELECT x FROM Foo f", Foo.class);
        List<Foo> l = q.getResultList();
        if (l == null || l.isEmpty()) {
            update();
        }

        return q.getResultList();
    }

    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public void update() {
        // FAIL: This query executes against H2 with Oracle entity manager!
        List<Object[]> l = emOracle.createNativeQuery("SELECT …
Run Code Online (Sandbox Code Playgroud)

java jpa jta java-ee cdi

24
推荐指数
1
解决办法
2万
查看次数

Google App Engine Java后端

我一直在Google上搜索Google App Engine后端代码示例,但我一无所获.有谁知道我在哪里可以找到教程或什么?

谢谢.

java google-app-engine backend

10
推荐指数
1
解决办法
4383
查看次数

标签 统计

java ×2

backend ×1

cdi ×1

google-app-engine ×1

java-ee ×1

jpa ×1

jta ×1