【问题标题】:Is it possible to set persistence unit default catalog at runtime是否可以在运行时设置持久性单元默认目录
【发布时间】:2011-03-25 10:30:20
【问题描述】:

目前我使用包含目录的表格注释

@Table(catalog = "Mycatalog", schema = "MySchema", name = "MyTable")

但目录名称应该是可配置的。

persistence.xml 文件不能在每次部署时更改,数据源默认数据库应设置为 TempDB。 (另一个过程经常锁定目录,并且驱动程序保持与数据源默认数据库的连接打开)所以我只能使用传递给 EntityManagerFactory 的属性来更改默认目录。

EntityManagerFactory emf = provider.createEntityManagerFactory(
                "default", properties);

是否可以在属性中设置持久化单元默认目录?

我正在使用 eclipselink 作为 JPA 提供程序。

【问题讨论】:

    标签: jpa persistence eclipselink


    【解决方案1】:

    只要它们在 XML 配置文件中,我就可以使用不同的目录。

    首先,我从我的实体类中删除了所有 @Table 注释并创建了两个 orm 文件。

    persistence.xml:

    <persistence xmlns="http://java.sun.com/xml/ns/persistence"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/persistence persistence_1_0.xsd"
        version="1.0">
        <persistence-unit name="storeone" transaction-type="RESOURCE_LOCAL">
            <mapping-file>META-INF/orm-storeone.xml</mapping-file>
        </persistence-unit>
    
        <persistence-unit name="storetwo" transaction-type="RESOURCE_LOCAL">
            <mapping-file>META-INF/orm-storetwo.xml</mapping-file>
        </persistence-unit>
    </persistence>
    

    orm-storeone-xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_1_0.xsd"
        version="1.0">
    
        <entity class="com.package.EntityClass">
            <table catalog="SomeCatalog" schema="SomeSchema" name="SomeTable" />
        </entity>
    </entity-mappings>
    

    然后在我创建 EntityManager 的代码中,我可以在两个目录之间进行选择。

    String persistencUnitName = "storeone";
    EntityManagerFactory emf = provider.createEntityManagerFactory(
                    persistencUnitName , map);
    

    这样我可以在运行时在目录之间进行更改,(但我仍然无法在运行时添加新目录)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-22
      • 1970-01-01
      • 1970-01-01
      • 2021-02-17
      • 2021-12-05
      • 2019-08-24
      • 2014-10-15
      • 2012-10-15
      相关资源
      最近更新 更多