Author: fdesbois Date: 2010-11-26 15:17:17 +0100 (Fri, 26 Nov 2010) New Revision: 441 Url: http://nuiton.org/repositories/revision/sandbox/441 Log: Add test with metatemodel usage, error in hibernate 3.6 with ElementCollection Added: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/Country.java jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/CountryImpl.java jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/entity/MetaModelTest.java Modified: jpa2-validation/trunk/jsr303-validation/src/test/resources/META-INF/persistence.xml jpa2-validation/trunk/jsr317-jpa2/pom.xml jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/Address.java jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/AddressImpl.java jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/Customer.java jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/CustomerImpl.java jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/persistence/CustomerDAOImplTest.java jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/test/AddressFake.java jpa2-validation/trunk/jsr317-jpa2/src/test/resources/META-INF/persistence.xml jpa2-validation/trunk/pom.xml Modified: jpa2-validation/trunk/jsr303-validation/src/test/resources/META-INF/persistence.xml =================================================================== --- jpa2-validation/trunk/jsr303-validation/src/test/resources/META-INF/persistence.xml 2010-11-22 14:13:30 UTC (rev 440) +++ jpa2-validation/trunk/jsr303-validation/src/test/resources/META-INF/persistence.xml 2010-11-26 14:17:17 UTC (rev 441) @@ -5,6 +5,7 @@ <persistence-unit name="jsr303-test" transaction-type="RESOURCE_LOCAL"> <class>org.nuiton.sandbox.jsr317.jpa2.entity.CustomerImpl</class> + <class>org.nuiton.sandbox.jsr317.jpa2.entity.CountryImpl</class> <!--<validation-mode>NONE</validation-mode>--> </persistence-unit> Modified: jpa2-validation/trunk/jsr317-jpa2/pom.xml =================================================================== --- jpa2-validation/trunk/jsr317-jpa2/pom.xml 2010-11-22 14:13:30 UTC (rev 440) +++ jpa2-validation/trunk/jsr317-jpa2/pom.xml 2010-11-26 14:17:17 UTC (rev 441) @@ -2,217 +2,189 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> + <modelVersion>4.0.0</modelVersion> - <!-- ************************************************************* --> - <!-- *** POM Relationships *************************************** --> - <!-- ************************************************************* --> + <!-- ************************************************************* --> + <!-- *** POM Relationships *************************************** --> + <!-- ************************************************************* --> - <parent> - <groupId>org.nuiton.sandbox</groupId> - <artifactId>jsr-tests</artifactId> - <version>0.1-SNAPSHOT</version> - </parent> + <parent> + <groupId>org.nuiton.sandbox</groupId> + <artifactId>jsr-tests</artifactId> + <version>0.1-SNAPSHOT</version> + </parent> - <artifactId>jsr317-jpa2</artifactId> + <artifactId>jsr317-jpa2</artifactId> - <dependencies> + <dependencies> - <!--<dependency>--> - <!--<groupId>org.nuiton</groupId>--> - <!--<artifactId>nuiton-utils</artifactId>--> - <!--<version>1.4.2</version>--> - <!--</dependency>--> + <!--<dependency>--> + <!--<groupId>org.nuiton</groupId>--> + <!--<artifactId>nuiton-utils</artifactId>--> + <!--<version>1.4.2</version>--> + <!--</dependency>--> - <!-- SPRING --> - <dependency> - <groupId>org.springframework</groupId> - <artifactId>spring-orm</artifactId> - </dependency> + <!-- SPRING --> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-orm</artifactId> + </dependency> - <dependency> - <groupId>org.springframework</groupId> - <artifactId>spring-core</artifactId> - </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-core</artifactId> + </dependency> - <dependency> - <groupId>org.springframework</groupId> - <artifactId>spring-jdbc</artifactId> - </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-jdbc</artifactId> + </dependency> - <dependency> - <groupId>org.springframework</groupId> - <artifactId>spring-beans</artifactId> - </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-beans</artifactId> + </dependency> - <dependency> - <groupId>org.springframework</groupId> - <artifactId>spring-context</artifactId> - </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-context</artifactId> + </dependency> - <dependency> - <groupId>org.springframework</groupId> - <artifactId>spring-tx</artifactId> - </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-tx</artifactId> + </dependency> - <!-- JPA : JSR-317- --> - <dependency> - <groupId>org.hibernate.javax.persistence</groupId> - <artifactId>hibernate-jpa-2.0-api</artifactId> - </dependency> + <!-- JPA : JSR-317- --> + <dependency> + <groupId>org.hibernate.javax.persistence</groupId> + <artifactId>hibernate-jpa-2.0-api</artifactId> + </dependency> - <dependency> - <groupId>org.hibernate</groupId> - <artifactId>hibernate-jpamodelgen</artifactId> - </dependency> + <dependency> + <groupId>org.hibernate</groupId> + <artifactId>hibernate-jpamodelgen</artifactId> + </dependency> - <dependency> - <groupId>org.hibernate</groupId> - <artifactId>hibernate-core</artifactId> - </dependency> + <dependency> + <groupId>org.hibernate</groupId> + <artifactId>hibernate-core</artifactId> + </dependency> - <!-- LOGGING --> - <dependency> - <groupId>commons-logging</groupId> - <artifactId>commons-logging</artifactId> - </dependency> - - <dependency> - <groupId>log4j</groupId> - <artifactId>log4j</artifactId> - </dependency> + <!-- LOGGING --> + <dependency> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </dependency> - <!-- TESTS --> - <dependency> - <groupId>com.h2database</groupId> - <artifactId>h2</artifactId> - </dependency> + <dependency> + <groupId>log4j</groupId> + <artifactId>log4j</artifactId> + </dependency> - <!-- Hibernate implementation used for tests --> - <dependency> - <groupId>org.hibernate</groupId> - <artifactId>hibernate-entitymanager</artifactId> - </dependency> + <!-- TESTS --> + <dependency> + <groupId>com.h2database</groupId> + <artifactId>h2</artifactId> + </dependency> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-api</artifactId> - </dependency> + <!-- Hibernate implementation used for tests --> + <dependency> + <groupId>org.hibernate</groupId> + <artifactId>hibernate-entitymanager</artifactId> + </dependency> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-log4j12</artifactId> - </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + </dependency> - <!-- Testing --> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-log4j12</artifactId> + </dependency> - <dependency> - <groupId>org.springframework</groupId> - <artifactId>spring-test</artifactId> - </dependency> + <!-- Testing --> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + </dependency> - </dependencies> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-test</artifactId> + </dependency> - <!-- ************************************************************* --> - <!-- *** Project Information ************************************* --> - <!-- ************************************************************* --> + </dependencies> - <name>JSR Tests :: JSR-317 JPA2</name> - <description>JPA2 tests</description> - <inceptionYear>2010</inceptionYear> - <url>http://maven-site.nuiton.org/${project.artifactId}</url> + <!-- ************************************************************* --> + <!-- *** Project Information ************************************* --> + <!-- ************************************************************* --> - <!-- ************************************************************* --> - <!-- *** Build Settings ****************************************** --> - <!-- ************************************************************* --> + <name>JSR Tests :: JSR-317 JPA2</name> + <description>JPA2 tests</description> + <inceptionYear>2010</inceptionYear> + <url>http://maven-site.nuiton.org/${project.artifactId}</url> - <packaging>jar</packaging> + <!-- ************************************************************* --> + <!-- *** Build Settings ****************************************** --> + <!-- ************************************************************* --> - <build> + <packaging>jar</packaging> - <resources> - <resource> - <directory>src/main/resources</directory> - <includes> - <include>**/*</include> - </includes> - <filtering>true</filtering> - </resource> - </resources> + <build> + <resources> + <resource> + <directory>src/main/resources</directory> + <includes> + <include>**/*</include> + </includes> + <filtering>true</filtering> + </resource> + </resources> - <!-- Configuration to generate metamodel : ref = http://docs.jboss.org/hibernate/jpamodelgen/1.0/reference/en-US/html_single/... --> - <plugins> - <plugin> - <artifactId>maven-compiler-plugin</artifactId> - <configuration> - <!--<compilerArguments>--> - <!--<!– Generate Jpa MetaModel –>--> - <!--<processor>org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor</processor>--> - <!--</compilerArguments>--> - <compilerArgument>-proc:none</compilerArgument> - </configuration> - </plugin> + <!-- Configuration to generate metamodel : ref = http://docs.jboss.org/hibernate/jpamodelgen/1.0/reference/en-US/html_single/... --> + <plugins> - <plugin> - <groupId>org.bsc.maven</groupId> - <artifactId>maven-processor-plugin</artifactId> - <executions> - <execution> - <id>process</id> - <goals> - <goal>process</goal> - </goals> - <phase>generate-sources</phase> - <configuration> - <compilerArguments>-Adebug=TRUE</compilerArguments> - <!-- source output directory --> - <outputDirectory>${maven.gen.dir}/java</outputDirectory> - </configuration> - </execution> - </executions> - </plugin> + <plugin> + <artifactId>maven-compiler-plugin</artifactId> + <configuration> + <compilerArgument>-proc:none</compilerArgument> + </configuration> + </plugin> - <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>build-helper-maven-plugin</artifactId> - <executions> - <execution> - <id>add-source</id> - <phase>generate-sources</phase> - <goals> - <goal>add-source</goal> - </goals> - <configuration> - <sources> - <source>${maven.gen.dir}/java</source> - </sources> - </configuration> - </execution> - </executions> - </plugin> + <plugin> + <groupId>org.bsc.maven</groupId> + <artifactId>maven-processor-plugin</artifactId> + <executions> + <execution> + <id>process</id> + <phase>process-sources</phase> + <goals> + <goal>process</goal> + </goals> + </execution> + </executions> + </plugin> - </plugins> + </plugins> - </build> + </build> - <!-- Source control management. --> - <scm> - <connection> - scm:svn:http://svn.nuiton.org/svn/sandbox/jpa2-validation/trunk/jsr317-jpa2 - </connection> - <developerConnection> - scm:svn:http://svn.nuiton.org/svn/sandbox/jpa2-validation/trunk/jsr317-jpa2 - </developerConnection> - <url> - http://www.nuiton.org/repositories/browse/sandbox/jpa2-validation/trunk/jsr3... - </url> - </scm> + <!-- Source control management. --> + <scm> + <connection> + scm:svn:http://svn.nuiton.org/svn/sandbox/jpa2-validation/trunk/jsr317-jpa2 + </connection> + <developerConnection> + scm:svn:http://svn.nuiton.org/svn/sandbox/jpa2-validation/trunk/jsr317-jpa2 + </developerConnection> + <url> + http://www.nuiton.org/repositories/browse/sandbox/jpa2-validation/trunk/jsr3... + </url> + </scm> </project> Modified: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/Address.java =================================================================== --- jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/Address.java 2010-11-22 14:13:30 UTC (rev 440) +++ jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/Address.java 2010-11-26 14:17:17 UTC (rev 441) @@ -64,11 +64,11 @@ /** * @return the country */ - public String getCountry(); + public Country getCountry(); /** * @param country the country to set */ - public void setCountry(String country); + public void setCountry(Country country); } Modified: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/AddressImpl.java =================================================================== --- jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/AddressImpl.java 2010-11-22 14:13:30 UTC (rev 440) +++ jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/AddressImpl.java 2010-11-26 14:17:17 UTC (rev 441) @@ -1,9 +1,10 @@ /** - * + * */ package org.nuiton.sandbox.jsr317.jpa2.entity; import javax.persistence.Embeddable; +import javax.persistence.ManyToOne; /** * @author fdesbois <fdesbois@codelutin.com> @@ -11,118 +12,119 @@ */ @Embeddable public class AddressImpl implements Address { - - public static final long serialVersionUID = 1L; - - /** - * the street - */ - private String street; - - /** - * the street complement - */ - private String street2; - - /** - * the zip code - */ - private String zipCode; - - /** - * the town - */ - private String town; - - /** - * the country - */ - private String country; - - /** - * Default constructor: constructs an empty address - */ - public AddressImpl(){ - } - /** - * @return the street - */ - @Override - public String getStreet() { - return street; - } + public static final long serialVersionUID = 1L; - /** - * @param street the street to set - */ - @Override - public void setStreet(String street) { - this.street = street; - } + /** + * the street + */ + private String street; - /** - * @return the street2 - */ - @Override - public String getStreet2() { - return street2; - } + /** + * the street complement + */ + private String street2; - /** - * @param street2 the street2 to set - */ - @Override - public void setStreet2(String street2) { - this.street2 = street2; - } + /** + * the zip code + */ + private String zipCode; - /** - * @return the zipCode - */ - @Override - public String getZipCode() { - return zipCode; - } + /** + * the town + */ + private String town; - /** - * @param zipCode the zipCode to set - */ - @Override - public void setZipCode(String zipCode) { - this.zipCode = zipCode; - } + /** + * the country + */ + private Country country; - /** - * @return the town - */ - @Override - public String getTown() { - return town; - } + /** + * Default constructor: constructs an empty address + */ + public AddressImpl() { + } - /** - * @param town the town to set - */ - @Override - public void setTown(String town) { - this.town = town; - } + /** + * @return the street + */ + @Override + public String getStreet() { + return street; + } - /** - * @return the country - */ - @Override - public String getCountry() { - return country; - } + /** + * @param street the street to set + */ + @Override + public void setStreet(String street) { + this.street = street; + } - /** - * @param country the country to set - */ - @Override - public void setCountry(String country) { - this.country = country; - } + /** + * @return the street2 + */ + @Override + public String getStreet2() { + return street2; + } + /** + * @param street2 the street2 to set + */ + @Override + public void setStreet2(String street2) { + this.street2 = street2; + } + + /** + * @return the zipCode + */ + @Override + public String getZipCode() { + return zipCode; + } + + /** + * @param zipCode the zipCode to set + */ + @Override + public void setZipCode(String zipCode) { + this.zipCode = zipCode; + } + + /** + * @return the town + */ + @Override + public String getTown() { + return town; + } + + /** + * @param town the town to set + */ + @Override + public void setTown(String town) { + this.town = town; + } + + /** + * @return the country + */ + @Override + @ManyToOne(targetEntity = CountryImpl.class) + public Country getCountry() { + return country; + } + + /** + * @param country the country to set + */ + @Override + public void setCountry(Country country) { + this.country = country; + } + } Added: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/Country.java =================================================================== --- jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/Country.java (rev 0) +++ jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/Country.java 2010-11-26 14:17:17 UTC (rev 441) @@ -0,0 +1,18 @@ +package org.nuiton.sandbox.jsr317.jpa2.entity; + +/** + * Created on 26 nov. 2010 + * + * @author fdesbois <florian.desbois@wiztivi.com> + * @version $Id$ + */ +public interface Country extends BaseEntity { + + String getCode(); + + void setCode(String code); + + String getName(); + + void setName(String name); +} Added: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/CountryImpl.java =================================================================== --- jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/CountryImpl.java (rev 0) +++ jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/CountryImpl.java 2010-11-26 14:17:17 UTC (rev 441) @@ -0,0 +1,43 @@ +package org.nuiton.sandbox.jsr317.jpa2.entity; + +import javax.persistence.Entity; +import javax.persistence.Table; + +/** + * Created on 26 nov. 2010 + * + * @author fdesbois <florian.desbois@wiztivi.com> + * @version $Id$ + */ +@Entity +@Table(name = CountryImpl.TABLE_NAME) +public class CountryImpl extends BaseEntityImpl implements Country { + + public static final long serialVersionUID = 1L; + + public static final String TABLE_NAME = "COUNTRY"; + + private String code; + + private String name; + + @Override + public String getCode() { + return code; + } + + @Override + public void setCode(String code) { + this.code = code; + } + + @Override + public String getName() { + return name; + } + + @Override + public void setName(String name) { + this.name = name; + } +} Modified: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/Customer.java =================================================================== --- jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/Customer.java 2010-11-22 14:13:30 UTC (rev 440) +++ jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/Customer.java 2010-11-26 14:17:17 UTC (rev 441) @@ -1,8 +1,10 @@ /** - * + * */ package org.nuiton.sandbox.jsr317.jpa2.entity; +import java.util.List; + /** * @author fdesbois <fdesbois@codelutin.com> * @version $Id$ @@ -23,73 +25,73 @@ String PROPERTY_ACCESS_CODE = "accessCode"; - /** - * @return the firstName - */ - public String getFirstName() ; + /** + * @return the firstName + */ + String getFirstName(); - /** - * @param firstName the firstName to set - */ - public void setFirstName(String firstName); + /** + * @param firstName the firstName to set + */ + void setFirstName(String firstName); - /** - * @return the lastName - */ - public String getLastName(); + /** + * @return the lastName + */ + String getLastName(); - /** - * @param lastName the lastName to set - */ - public void setLastName(String lastName); + /** + * @param lastName the lastName to set + */ + void setLastName(String lastName); - /** - * @return the address - */ - public Address getAddress(); + /** + * @return the addresses + */ + List<Address> getAddresses(); - /** - * @param address the address to set - */ - public void setAddress(Address address); + /** + * @param addresses the addresses to set + */ + void setAddresses(List<Address> addresses); - /** - * @return the phone - */ - public String getPhone() ; + /** + * @return the phone + */ + String getPhone(); - /** - * @param phone the phone to set - */ - public void setPhone(String phone) ; - - /** - * @return the cellphone - */ - public String getCellphone() ; + /** + * @param phone the phone to set + */ + void setPhone(String phone); - /** - * @param cellphone the cellphone to set - */ - public void setCellphone(String cellphone) ; + /** + * @return the cellphone + */ + String getCellphone(); - /** - * @return the email - */ - public String getEmail(); + /** + * @param cellphone the cellphone to set + */ + void setCellphone(String cellphone); - /** - * @param email the email to set - */ - public void setEmail(String email) ; + /** + * @return the email + */ + String getEmail(); - /** - * @return the accessCode - */ - public AccessCode getAccessCode(); + /** + * @param email the email to set + */ + void setEmail(String email); - /** - * @param accessCode the accessCode to set - */ - public void setAccessCode(AccessCode accessCode) ; + /** + * @return the accessCode + */ + AccessCode getAccessCode(); + + /** + * @param accessCode the accessCode to set + */ + void setAccessCode(AccessCode accessCode); } Modified: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/CustomerImpl.java =================================================================== --- jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/CustomerImpl.java 2010-11-22 14:13:30 UTC (rev 440) +++ jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/CustomerImpl.java 2010-11-26 14:17:17 UTC (rev 441) @@ -3,9 +3,13 @@ */ package org.nuiton.sandbox.jsr317.jpa2.entity; +import javax.persistence.CollectionTable; +import javax.persistence.ElementCollection; import javax.persistence.Embedded; import javax.persistence.Entity; +import javax.persistence.JoinColumn; import javax.persistence.Table; +import java.util.List; import org.nuiton.sandbox.jsr317.jpa2.config.JpaHelper; @@ -14,11 +18,17 @@ * @version $Id$ */ @Entity -@Table(name = "CUSTOMER") +@Table(name = CustomerImpl.TABLE_NAME) public class CustomerImpl extends BaseEntityImpl implements Customer { public static final long serialVersionUID = 1L; + public static final String TABLE_NAME = "CUSTOMER"; + + public static final String FOREIGN_KEY_COLUMN_NAME = "customer_id"; + + public static final String CUSTOMER_ADDRESS_TABLE_NAME = "CUSTOMER_ADDRESS"; + /** * the firstName */ @@ -32,7 +42,7 @@ /** * the address */ - private Address address; + private List<Address> addresses; /** * the phone number @@ -95,18 +105,21 @@ /** * @return the address */ - @Embedded @Override - public AddressImpl getAddress() { - return JpaHelper.safeEmbeddableCast(address, AddressImpl.class); + @ElementCollection(targetClass = AddressImpl.class) + @CollectionTable(name = CUSTOMER_ADDRESS_TABLE_NAME, joinColumns = + @JoinColumn(name = FOREIGN_KEY_COLUMN_NAME, referencedColumnName = PROPERTY_ID) + ) + public List<Address> getAddresses() { + return addresses; } /** - * @param address the address to set + * @param addresses the address to set */ @Override - public void setAddress(Address address) { - this.address = address; + public void setAddresses(List<Address> addresses) { + this.addresses = addresses; } /** Added: jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/entity/MetaModelTest.java =================================================================== --- jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/entity/MetaModelTest.java (rev 0) +++ jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/entity/MetaModelTest.java 2010-11-26 14:17:17 UTC (rev 441) @@ -0,0 +1,26 @@ +package org.nuiton.sandbox.jsr317.jpa2.entity; + +import org.junit.Assert; +import org.junit.Test; +import org.nuiton.sandbox.jsr317.jpa2.test.BaseTest; + +/** + * Created on 26 nov. 2010 + * + * @author fdesbois <florian.desbois@wiztivi.com> + * @version $Id$ + */ +public class MetaModelTest extends BaseTest { + + @Test + public void testEmbeddableSingularAttribute() { + + Assert.assertNotNull(AccessCodeImpl_.login); + Assert.assertNotNull(AccessCodeImpl_.password); + + // Broken with Hibernate 3.6 and MetamodelGenerator 1.1 + Assert.assertNotNull(AddressImpl_.town); + Assert.assertNotNull(AddressImpl_.country); + } + +} Modified: jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/persistence/CustomerDAOImplTest.java =================================================================== --- jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/persistence/CustomerDAOImplTest.java 2010-11-22 14:13:30 UTC (rev 440) +++ jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/persistence/CustomerDAOImplTest.java 2010-11-26 14:17:17 UTC (rev 441) @@ -1,9 +1,11 @@ package org.nuiton.sandbox.jsr317.jpa2.persistence; import javax.persistence.PersistenceException; +import java.util.Arrays; import org.junit.Assert; import org.junit.Test; +import org.junit.matchers.JUnitMatchers; import org.nuiton.sandbox.jsr317.jpa2.config.JpaHelper; import org.nuiton.sandbox.jsr317.jpa2.entity.Address; import org.nuiton.sandbox.jsr317.jpa2.entity.Customer; @@ -36,10 +38,11 @@ address.setStreet("createStreet"); address.setZipCode("40000"); - user.setAddress(address); + user.setAddresses(Arrays.asList(address)); - Assert.assertNotNull(user.getAddress()); - Assert.assertEquals("createStreet", user.getAddress().getStreet()); + Assert.assertNotNull(user.getAddresses()); + Assert.assertThat(user.getAddresses(), JUnitMatchers.hasItem(address)); + Assert.assertEquals("createStreet", user.getAddresses().get(0).getStreet()); } /** @@ -59,7 +62,7 @@ address.setStreet("fakeStreet"); address.setZipCode("40000"); - user.setAddress(address); + user.setAddresses(Arrays.asList(address)); userDAO.save(user); } Modified: jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/test/AddressFake.java =================================================================== --- jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/test/AddressFake.java 2010-11-22 14:13:30 UTC (rev 440) +++ jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/test/AddressFake.java 2010-11-26 14:17:17 UTC (rev 441) @@ -2,6 +2,7 @@ import org.nuiton.sandbox.jsr317.jpa2.config.JpaHelper; import org.nuiton.sandbox.jsr317.jpa2.entity.Address; +import org.nuiton.sandbox.jsr317.jpa2.entity.Country; /** * Fake implementation of address to test Embeddable target management (need explicit cast provided by {@link @@ -51,11 +52,11 @@ } @Override - public String getCountry() { + public Country getCountry() { return null; } @Override - public void setCountry(String country) { + public void setCountry(Country country) { } } Modified: jpa2-validation/trunk/jsr317-jpa2/src/test/resources/META-INF/persistence.xml =================================================================== --- jpa2-validation/trunk/jsr317-jpa2/src/test/resources/META-INF/persistence.xml 2010-11-22 14:13:30 UTC (rev 440) +++ jpa2-validation/trunk/jsr317-jpa2/src/test/resources/META-INF/persistence.xml 2010-11-26 14:17:17 UTC (rev 441) @@ -5,6 +5,7 @@ <persistence-unit name="jsr317-test" transaction-type="RESOURCE_LOCAL"> <class>org.nuiton.sandbox.jsr317.jpa2.entity.CustomerImpl</class> + <class>org.nuiton.sandbox.jsr317.jpa2.entity.CountryImpl</class> </persistence-unit> </persistence> \ No newline at end of file Modified: jpa2-validation/trunk/pom.xml =================================================================== --- jpa2-validation/trunk/pom.xml 2010-11-22 14:13:30 UTC (rev 440) +++ jpa2-validation/trunk/pom.xml 2010-11-26 14:17:17 UTC (rev 441) @@ -81,7 +81,7 @@ <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-jpamodelgen</artifactId> - <version>${jpa2ApiVersion}</version> + <version>${hibernateMetamodelGeneratorVersion}</version> <scope>provided</scope> </dependency> @@ -173,13 +173,14 @@ <properties> <!-- Dependencies versions --> - <springVersion>3.0.4.RELEASE</springVersion> + <springVersion>3.0.5.RELEASE</springVersion> <jpa2ApiVersion>1.0.0.Final</jpa2ApiVersion> <validationApiVersion>1.0.0.GA</validationApiVersion> <!-- For test only : Hibernate implementation for JSR used --> - <hibernateVersion>3.5.6-Final</hibernateVersion> - <hibernateValidatorVersion>4.0.2.GA</hibernateValidatorVersion> + <hibernateVersion>3.6.0.Final</hibernateVersion> + <hibernateValidatorVersion>4.1.0.Final</hibernateValidatorVersion> + <hibernateMetamodelGeneratorVersion>1.1.0.Final</hibernateMetamodelGeneratorVersion> <slf4jVersion>1.6.1</slf4jVersion> </properties> @@ -194,17 +195,19 @@ <groupId>org.bsc.maven</groupId> <artifactId>maven-processor-plugin</artifactId> <version>1.3.7</version> - </plugin> + <configuration> + <!-- source output directory --> + <outputDirectory>${maven.gen.dir}/annotations</outputDirectory> + </configuration> - <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>build-helper-maven-plugin</artifactId> - <version>1.3</version> - </plugin> + <!--<dependencies>--> + <!--<dependency>--> + <!--<groupId>org.hibernate</groupId>--> + <!--<artifactId>hibernate-jpamodelgen</artifactId>--> + <!--<version>${hibernateMetamodelGeneratorVersion}</version>--> + <!--</dependency>--> + <!--</dependencies>--> - <plugin> - <artifactId>maven-invoker-plugin</artifactId> - <version>1.5</version> </plugin> </plugins>