3

JPA (EclipseLink 2.4) では、NativeQuery でスキーマ名を指定する必要があります。

EntityManager em = emf.createEntityManager();
Query query = em.createNativeQuery("select foo from bar.table");

上記は機能しますが、特にorm.xmlですでに指定しているという事実を考えると、スキーマ名をハードコーディングするのは明らかに好きではありません。

<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 orm_2_0.xsd"
    version="2.0">
    <persistence-unit-metadata>
        <persistence-unit-defaults>
            <schema>bar</schema>
        </persistence-unit-defaults>
    </persistence-unit-metadata>   
</entity-mappings>

確かにどこかから実行時にスキーマ名を取得する方法が必要ですか?

4

1 に答える 1