You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2012/11/06 14:48:07 UTC
svn commit: r1406138 - in /cxf/branches/2.6.x-fixes: ./
rt/rs/extensions/search/
rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/
rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/fiql/
rt/rs/extensions/search/...
Author: sergeyb
Date: Tue Nov 6 13:48:06 2012
New Revision: 1406138
URL: http://svn.apache.org/viewvc?rev=1406138&view=rev
Log:
Merged revisions 1404148,1404556,1405063 via svnmerge from
https://svn.apache.org/repos/asf/cxf/trunk
........
r1404148 | sergeyb | 2012-10-31 14:10:44 +0000 (Wed, 31 Oct 2012) | 1 line
Minor updates to the search code
........
r1404556 | sergeyb | 2012-11-01 12:25:01 +0000 (Thu, 01 Nov 2012) | 1 line
Adding JPA2 test with relationship
........
r1405063 | sergeyb | 2012-11-02 17:19:53 +0000 (Fri, 02 Nov 2012) | 1 line
Few updates to the search code after testing with OpenJPA
........
Added:
cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/Library.java
- copied unchanged from r1404556, cxf/trunk/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/Library.java
Modified:
cxf/branches/2.6.x-fixes/ (props changed)
cxf/branches/2.6.x-fixes/rt/rs/extensions/search/pom.xml
cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/SearchUtils.java
cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/fiql/FiqlParser.java
cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/jpa/AbstractJPATypedQueryVisitor.java
cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/jpa/JPACriteriaQueryVisitor.java
cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/jpa/JPATypedQueryVisitor.java
cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/Book.java
cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/Book_.java
cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/JPATypedQueryVisitorTest.java
cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/Name.java
cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/test/resources/META-INF/persistence.xml
Propchange: cxf/branches/2.6.x-fixes/
------------------------------------------------------------------------------
Merged /cxf/trunk:r1404148,1404556,1405063
Propchange: cxf/branches/2.6.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: cxf/branches/2.6.x-fixes/rt/rs/extensions/search/pom.xml
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/rt/rs/extensions/search/pom.xml?rev=1406138&r1=1406137&r2=1406138&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/rt/rs/extensions/search/pom.xml (original)
+++ cxf/branches/2.6.x-fixes/rt/rs/extensions/search/pom.xml Tue Nov 6 13:48:06 2012
@@ -65,17 +65,25 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-entitymanager</artifactId>
- <version>${hibernate.em.version}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>hsqldb</groupId>
- <artifactId>hsqldb</artifactId>
- <version>${hsqldb.version}</version>
- <scope>test</scope>
- </dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-entitymanager</artifactId>
+ <version>${hibernate.em.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>hsqldb</groupId>
+ <artifactId>hsqldb</artifactId>
+ <version>${hsqldb.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <!--
+ <dependency>
+ <groupId>org.apache.openjpa</groupId>
+ <artifactId>openjpa</artifactId>
+ <version>2.2.0</version>
+ <scope>test</scope>
+ </dependency>
+ -->
</dependencies>
<build>
<plugins>
Modified: cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/SearchUtils.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/SearchUtils.java?rev=1406138&r1=1406137&r2=1406138&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/SearchUtils.java (original)
+++ cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/SearchUtils.java Tue Nov 6 13:48:06 2012
@@ -26,11 +26,10 @@ import org.apache.cxf.jaxrs.ext.search.s
public final class SearchUtils {
public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";
- //public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSSZ";
public static final String DATE_FORMAT_PROPERTY = "search.date-format";
public static final String TIMEZONE_SUPPORT_PROPERTY = "search.timezone.support";
public static final String LAX_PROPERTY_MATCH = "search.lax.property.match";
- public static final String BEAN_PROPERTY_MAP = "search.lax.property.match";
+ public static final String BEAN_PROPERTY_MAP = "search.bean.property.map";
private SearchUtils() {
Modified: cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/fiql/FiqlParser.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/fiql/FiqlParser.java?rev=1406138&r1=1406137&r2=1406138&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/fiql/FiqlParser.java (original)
+++ cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/fiql/FiqlParser.java Tue Nov 6 13:48:06 2012
@@ -286,27 +286,26 @@ public class FiqlParser<T> implements Se
Object castedValue = value;
if (Date.class.isAssignableFrom(valueType)) {
castedValue = convertToDate(value);
- } else {
+ } else if (ownerBean == null || valueType.isPrimitive()) {
try {
castedValue = InjectionUtils.convertStringToPrimitive(value, valueType);
} catch (Exception e) {
- boolean throwEx = true;
- if (!valueType.isPrimitive()) {
- try {
- Method setterM = valueType.getMethod("set" + getMethodNameSuffix(setter),
- new Class[]{String.class});
- setterM.invoke(ownerBean, new Object[]{value});
- castedValue = lastCastedValue;
- throwEx = false;
- } catch (Throwable ex) {
- // continue
- }
- }
- if (throwEx) {
- throw new SearchParseException("Cannot convert String value \"" + value
+ throw new SearchParseException("Cannot convert String value \"" + value
+ "\" to a value of class " + valueType.getName(), e);
- }
}
+ } else {
+ try {
+ Method setterM = valueType.getMethod("set" + getMethodNameSuffix(setter),
+ new Class[]{String.class});
+ setterM.invoke(ownerBean, new Object[]{value});
+ } catch (Throwable ex) {
+ throw new SearchParseException("Cannot convert String value \"" + value
+ + "\" to a value of class " + valueType.getName(), ex);
+ }
+
+ }
+ if (lastCastedValue != null) {
+ castedValue = lastCastedValue;
}
return castedValue;
} else {
Modified: cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/jpa/AbstractJPATypedQueryVisitor.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/jpa/AbstractJPATypedQueryVisitor.java?rev=1406138&r1=1406137&r2=1406138&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/jpa/AbstractJPATypedQueryVisitor.java (original)
+++ cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/jpa/AbstractJPATypedQueryVisitor.java Tue Nov 6 13:48:06 2012
@@ -24,6 +24,7 @@ import java.util.Map;
import java.util.Stack;
import javax.persistence.EntityManager;
+import javax.persistence.TypedQuery;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Path;
@@ -124,6 +125,10 @@ public abstract class AbstractJPATypedQu
return root;
}
+ public TypedQuery<T1> getTypedQuery() {
+ return em.createQuery(getCriteriaQuery());
+ }
+
public CriteriaQuery<T1> getCriteriaQuery() {
if (!criteriaFinalized) {
List<Predicate> predsList = predStack.pop();
Modified: cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/jpa/JPACriteriaQueryVisitor.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/jpa/JPACriteriaQueryVisitor.java?rev=1406138&r1=1406137&r2=1406138&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/jpa/JPACriteriaQueryVisitor.java (original)
+++ cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/jpa/JPACriteriaQueryVisitor.java Tue Nov 6 13:48:06 2012
@@ -25,6 +25,7 @@ import java.util.Map;
import javax.persistence.EntityManager;
import javax.persistence.criteria.CompoundSelection;
import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Path;
import javax.persistence.criteria.Selection;
import javax.persistence.metamodel.SingularAttribute;
@@ -82,7 +83,9 @@ public class JPACriteriaQueryVisitor<T,
private List<Selection<?>> toSelectionsList(List<SingularAttribute<T, ?>> attributes) {
List<Selection<?>> selections = new ArrayList<Selection<?>>(attributes.size());
for (SingularAttribute<T, ?> attr : attributes) {
- selections.add(getRoot().get(attr));
+ Path<?> path = getRoot().get(attr);
+ path.alias(attr.getName());
+ selections.add(path);
}
return selections;
}
Modified: cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/jpa/JPATypedQueryVisitor.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/jpa/JPATypedQueryVisitor.java?rev=1406138&r1=1406137&r2=1406138&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/jpa/JPATypedQueryVisitor.java (original)
+++ cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/jpa/JPATypedQueryVisitor.java Tue Nov 6 13:48:06 2012
@@ -34,7 +34,7 @@ public class JPATypedQueryVisitor<T> ext
}
public TypedQuery<T> getQuery() {
- return getEntityManager().createQuery(getCriteriaQuery());
+ return getTypedQuery();
}
-
+
}
Modified: cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/Book.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/Book.java?rev=1406138&r1=1406137&r2=1406138&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/Book.java (original)
+++ cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/Book.java Tue Nov 6 13:48:06 2012
@@ -21,15 +21,17 @@ package org.apache.cxf.jaxrs.ext.search.
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.Id;
+import javax.persistence.ManyToOne;
@Entity(name = "Book")
public class Book {
- @Id
private int id;
private String title;
private OwnerAddress address;
private OwnerInfo ownerInfo;
+ private Library library;
+ @Id
public int getId() {
return id;
}
@@ -62,4 +64,13 @@ public class Book {
public void setOwnerInfo(OwnerInfo ownerInfo) {
this.ownerInfo = ownerInfo;
}
+
+ @ManyToOne
+ public Library getLibrary() {
+ return library;
+ }
+
+ public void setLibrary(Library library) {
+ this.library = library;
+ }
}
Modified: cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/Book_.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/Book_.java?rev=1406138&r1=1406137&r2=1406138&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/Book_.java (original)
+++ cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/Book_.java Tue Nov 6 13:48:06 2012
@@ -28,5 +28,8 @@ public final class Book_ {
}
public static volatile SingularAttribute<Book, Integer> id;
public static volatile SingularAttribute<Book, String> title;
+ public static volatile SingularAttribute<Book, Library> library;
+ public static volatile SingularAttribute<Book, OwnerInfo> ownerInfo;
+ public static volatile SingularAttribute<Book, OwnerAddress> address;
}
//CHECKSTYLE:ON
\ No newline at end of file
Modified: cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/JPATypedQueryVisitorTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/JPATypedQueryVisitorTest.java?rev=1406138&r1=1406137&r2=1406138&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/JPATypedQueryVisitorTest.java (original)
+++ cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/JPATypedQueryVisitorTest.java Tue Nov 6 13:48:06 2012
@@ -64,10 +64,17 @@ public class JPATypedQueryVisitorTest ex
fail("Exception during HSQL database init.");
}
try {
- emFactory = Persistence.createEntityManagerFactory("testUnit");
+ emFactory = Persistence.createEntityManagerFactory("testUnitHibernate");
em = emFactory.createEntityManager();
em.getTransaction().begin();
+
+ Library lib = new Library();
+ lib.setId(1);
+ lib.setAddress("town");
+ em.persist(lib);
+ assertTrue(em.contains(lib));
+
Book b1 = new Book();
b1.setId(9);
b1.setTitle("num9");
@@ -76,6 +83,7 @@ public class JPATypedQueryVisitorTest ex
info1.setName(new Name("Fred"));
info1.setDateOfBirth(parseDate("2000-01-01"));
b1.setOwnerInfo(info1);
+ b1.setLibrary(lib);
em.persist(b1);
assertTrue(em.contains(b1));
Book b2 = new Book();
@@ -86,6 +94,7 @@ public class JPATypedQueryVisitorTest ex
info2.setName(new Name("Barry"));
info2.setDateOfBirth(parseDate("2001-01-01"));
b2.setOwnerInfo(info2);
+ b2.setLibrary(lib);
em.persist(b2);
assertTrue(em.contains(b2));
Book b3 = new Book();
@@ -96,10 +105,10 @@ public class JPATypedQueryVisitorTest ex
info3.setName(new Name("Bill"));
info3.setDateOfBirth(parseDate("2002-01-01"));
b3.setOwnerInfo(info3);
+ b3.setLibrary(lib);
em.persist(b3);
assertTrue(em.contains(b3));
-
em.getTransaction().commit();
} catch (Exception ex) {
ex.printStackTrace();
@@ -228,7 +237,12 @@ public class JPATypedQueryVisitorTest ex
assertEquals("Fred", book.getOwnerInfo().getName().getName());
}
+
@Test
+ // "ownerInfo.name" maps to Name class and this
+ // does not work in OpenJPA, as opposed to Hibernate
+ // "ownerInfo.name.name" will map to primitive type, see
+ // testEqualsOwnerNameQuery3(), which also works in OpenJPA
public void testEqualsOwnerNameQuery2() throws Exception {
List<Book> books = queryBooks("ownerInfo.name==Fred");
assertEquals(1, books.size());
@@ -246,6 +260,15 @@ public class JPATypedQueryVisitorTest ex
}
@Test
+ public void testFindBookInTownLibrary() throws Exception {
+ List<Book> books = queryBooks("libAddress==town;title==num10", null,
+ Collections.singletonMap("libAddress", "library.address"));
+ assertEquals(1, books.size());
+ Book book = books.get(0);
+ assertEquals("Barry", book.getOwnerInfo().getName().getName());
+ }
+
+ @Test
public void testEqualsOwnerBirthDate() throws Exception {
List<Book> books = queryBooks("ownerbdate==2000-01-01", null,
Collections.singletonMap("ownerbdate", "ownerInfo.dateOfBirth"));
Modified: cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/Name.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/Name.java?rev=1406138&r1=1406137&r2=1406138&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/Name.java (original)
+++ cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/Name.java Tue Nov 6 13:48:06 2012
@@ -29,7 +29,7 @@ public class Name {
public Name() {
}
- Name(String name) {
+ public Name(String name) {
this.name = name;
}
Modified: cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/test/resources/META-INF/persistence.xml
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/test/resources/META-INF/persistence.xml?rev=1406138&r1=1406137&r2=1406138&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/test/resources/META-INF/persistence.xml (original)
+++ cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/test/resources/META-INF/persistence.xml Tue Nov 6 13:48:06 2012
@@ -2,17 +2,35 @@
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_2_0.xsd"
version="2.0">
- <persistence-unit name="testUnit" transaction-type="RESOURCE_LOCAL">
- <provider>org.hibernate.ejb.HibernatePersistence</provider>
- <class>org.apache.cxf.jaxrs.ext.search.jpa.Book</class>
- <exclude-unlisted-classes>true</exclude-unlisted-classes>
- <properties>
+ <persistence-unit name="testUnitHibernate" transaction-type="RESOURCE_LOCAL">
+ <provider>org.hibernate.ejb.HibernatePersistence</provider>
+ <class>org.apache.cxf.jaxrs.ext.search.jpa.Book</class>
+ <class>org.apache.cxf.jaxrs.ext.search.jpa.Library</class>
+ <exclude-unlisted-classes>true</exclude-unlisted-classes>
+ <properties>
<property name="hibernate.connection.url" value="jdbc:hsqldb:mem:books-jpa"/>
<property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
<property name="hibernate.hbm2ddl.auto" value="create-drop"/>
<property name="hibernate.connection.username" value="sa"/>
<property name="hibernate.connection.password" value=""/>
- </properties>
-</persistence-unit>
+ </properties>
+ </persistence-unit>
+ <persistence-unit name="testUnitOpenJPA" transaction-type="RESOURCE_LOCAL">
+ <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
+ <class>org.apache.cxf.jaxrs.ext.search.jpa.Book</class>
+ <class>org.apache.cxf.jaxrs.ext.search.jpa.Library</class>
+ <class>org.apache.cxf.jaxrs.ext.search.jpa.OwnerAddress</class>
+ <class>org.apache.cxf.jaxrs.ext.search.jpa.OwnerInfo</class>
+ <class>org.apache.cxf.jaxrs.ext.search.jpa.Name</class>
+ <exclude-unlisted-classes>true</exclude-unlisted-classes>
+ <properties>
+ <property name="openjpa.ConnectionURL" value="jdbc:hsqldb:mem:books-jpa"/>
+ <property name="openjpa.ConnectionDriverName" value="org.hsqldb.jdbcDriver"/>
+ <property name="openjpa.jdbc.DBDictionary" value="hsql" />
+ <property name="openjpa.ConnectionUserName" value="sa"/>
+ <property name="openjpa.ConnectionPassword" value=""/>
+ <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema"/>
+ </properties>
+ </persistence-unit>
</persistence>
\ No newline at end of file