December 9th, 2009
6:06 pm
Posted under JPA
Permalink
Tags Eclipselink, JPA, Oracle, Tip
To use Oracle specific features in JPA with Eclipselink, such as using sequences for ID generation as described in this example here, it is necessary to set the correct property in persistence.xml to ensure that JPA/Eclipselink knows that an Oracle database is in use. By default, it does not discover this automatically and resorts to using table based ID generation even if you turn sequences on as per the above example.
A sample persistence.xml with the correct properties follows :-
<?xml version="1.0" encoding="UTF-8"?> <persistence version="1.0" 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 http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"> <persistence-unit name="JPATest" transaction-type="RESOURCE_LOCAL"> <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> <non-jta-data-source>jdbc/JPATestPool</non-jta-data-source> <mapping-file>META-INF/orm.xml</mapping-file> <class>uk.co.salientsoft.jpatest.domain.UserInfo</class> <properties> <property name="eclipselink.target-server" value="SunAS9" /> <property name="eclipselink.logging.level" value="FINEST" /> <property name="eclipselink.session-name" value="JPATestSession" /> <!-- Ensure Eclipselink knows we have an Oracle Database so that Oracle specific features work correctly --> <property name="eclipselink.target-database" value="Oracle"/> <!-- This will cause EclipseLink to create the database schema automatically on every run. You can also do this from the JPA Tools/Create Tables from Entities project context menu option in Eclipse, which may well be preferrable--> <!-- <property name="eclipselink.ddl-generation" value="drop-and-create-tables" /> <property name="eclipselink.ddl-generation.output-mode" value="database" /> --> </properties> </persistence-unit> </persistence>
Comments Off on Using Oracle Specific features in JPA with Eclipselink