JBPAPP-1078 EJB-413 - Removed a dependency on sequences for XMLTests and added a specific package with sequences, to be used only on databases which supports it. For trunk

git-svn-id: https://svn.jboss.org/repos/hibernate/core/trunk@16383 1b8cb986-b30d-0410-93ca-fae66ebed9b2
This commit is contained in:
Juraci Krohling 2009-04-21 14:02:32 +00:00
parent 8b4b88200b
commit 0f9a6882b9
14 changed files with 416 additions and 12 deletions

View File

@ -15,6 +15,7 @@ import javax.persistence.Persistence;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.hibernate.cfg.Environment; import org.hibernate.cfg.Environment;
import org.hibernate.dialect.Dialect;
import org.hibernate.ejb.HibernatePersistence; import org.hibernate.ejb.HibernatePersistence;
@ -146,4 +147,33 @@ public abstract class TestCase extends junit.framework.TestCase {
} }
return config; return config;
} }
@Override
public void runBare() throws Throwable {
if (!appliesTo(Dialect.getDialect()))
return;
Throwable exception = null;
setUp();
try {
runTest();
} catch (Throwable running) {
exception = running;
} finally {
try {
tearDown();
} catch (Throwable tearingDown) {
if (exception == null)
exception = tearingDown;
}
}
if (exception != null)
throw exception;
}
public boolean appliesTo(Dialect dialect) {
return true;
}
} }

View File

@ -2,18 +2,15 @@
package org.hibernate.ejb.test.cascade; package org.hibernate.ejb.test.cascade;
import javax.persistence.Entity; import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.GeneratedValue; import javax.persistence.GeneratedValue;
import javax.persistence.SequenceGenerator; import javax.persistence.Id;
import javax.persistence.GenerationType;
/** /**
* @author Emmanuel Bernard * @author Emmanuel Bernard
*/ */
@Entity @Entity
public class Author { public class Author {
@Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "ENTITY2_SEQ") @Id @GeneratedValue
@SequenceGenerator(name = "ENTITY2_SEQ")
private Long id; private Long id;
} }

View File

@ -2,20 +2,18 @@
package org.hibernate.ejb.test.cascade; package org.hibernate.ejb.test.cascade;
import javax.persistence.Entity; import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.GeneratedValue;
import javax.persistence.FetchType; import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne; import javax.persistence.ManyToOne;
import javax.persistence.GenerationType;
import javax.persistence.SequenceGenerator;
/** /**
* @author Emmanuel Bernard * @author Emmanuel Bernard
*/ */
@Entity @Entity
public class Song { public class Song {
@Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "ENTITY1_SEQ") @Id @GeneratedValue
@SequenceGenerator(name = "ENTITY1_SEQ") private Long id; private Long id;
@ManyToOne(fetch = FetchType.LAZY, optional = false) @ManyToOne(fetch = FetchType.LAZY, optional = false)
private Author author; private Author author;

View File

@ -26,7 +26,7 @@
metadata-complete="false"> metadata-complete="false">
<attributes> <attributes>
<id name="id"> <id name="id">
<generated-value strategy="SEQUENCE"/> <generated-value strategy="AUTO"/>
</id> </id>
</attributes> </attributes>
</entity> </entity>

View File

@ -0,0 +1,54 @@
//$Id: $
package org.hibernate.ejb.test.xml.sequences;
/**
* @author Emmanuel Bernard
*/
public class Address {
private String street;
private String city;
private String state;
private String zip;
public Address() {
}
public Address(String street, String city, String state, String zip) {
this.street = street;
this.city = city;
this.state = state;
this.zip = zip;
}
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public String getZip() {
return zip;
}
public void setZip(String zip) {
this.zip = zip;
}
}

View File

@ -0,0 +1,49 @@
//$Id: $
package org.hibernate.ejb.test.xml.sequences;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.GeneratedValue;
import javax.persistence.CascadeType;
import javax.persistence.ManyToOne;
import javax.persistence.JoinColumn;
/**
* @author Emmanuel Bernard
*/
@Entity
@Table(name = "ITEM")
@org.hibernate.annotations.BatchSize(size = 10)
public class Article {
private Integer id;
private String name;
private Article nextArticle;
@Id @GeneratedValue public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@Column(name="poopoo")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "NEXT_MESSAGE_ID")
public Article getNextArticle() {
return nextArticle;
}
public void setNextArticle(Article nextArticle) {
this.nextArticle = nextArticle;
}
}

View File

@ -0,0 +1,66 @@
//$Id: $
package org.hibernate.ejb.test.xml.sequences;
import javax.persistence.Entity;
import javax.persistence.Id;
/**
* @author Emmanuel Bernard
*/
@Entity
public class Employee {
@Id
Long id;
String name;
/*
@Embedded
@AttributeOverrides({
@AttributeOverride(name = "street", column = @Column(name = "HA_street")),
@AttributeOverride(name = "city", column = @Column(name = "HA_city")),
@AttributeOverride(name = "state", column = @Column(name = "HA_state")),
@AttributeOverride(name = "zip", column = @Column(name = "HA_zip")) })
*/
Address homeAddress;
/*
@Embedded
@AttributeOverrides({
@AttributeOverride(name = "street", column = @Column(name = "MA_street")),
@AttributeOverride(name = "city", column = @Column(name = "MA_city")),
@AttributeOverride(name = "state", column = @Column(name = "MA_state")),
@AttributeOverride(name = "zip", column = @Column(name = "MA_zip")) })
*/
Address mailAddress;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Address getHomeAddress() {
return homeAddress;
}
public void setHomeAddress(Address homeAddress) {
this.homeAddress = homeAddress;
}
public Address getMailAddress() {
return mailAddress;
}
public void setMailAddress(Address mailAddress) {
this.mailAddress = mailAddress;
}
}

View File

@ -0,0 +1,10 @@
//$Id: $
package org.hibernate.ejb.test.xml.sequences;
/**
* @author Emmanuel Bernard
*/
public class Light {
public String name;
public String power;
}

View File

@ -0,0 +1,10 @@
//$Id: $
package org.hibernate.ejb.test.xml.sequences;
/**
* @author Emmanuel Bernard
*/
public class Lighter {
public String name;
public String power;
}

View File

@ -0,0 +1,41 @@
//$Id: $
package org.hibernate.ejb.test.xml.sequences;
import javax.persistence.EntityManager;
import org.hibernate.ejb.test.TestCase;
/**
* @author Emmanuel Bernard
*/
public class XmlAttributeOverrideTest extends TestCase {
public void testAttributeOverriding() throws Exception {
EntityManager em = getOrCreateEntityManager();
em.getTransaction().begin();
Employee e = new Employee();
e.setId(Long.valueOf(100));
e.setName("Bubba");
e.setHomeAddress(new Address("123 Main St", "New York", "NY", "11111"));
e.setMailAddress(new Address("P.O. Box 123", "New York", "NY", "11111"));
em.persist(e);
em.flush();
em.getTransaction().rollback();
em.close();
}
public Class[] getAnnotatedClasses() {
return new Class[0];
}
@Override
public String[] getEjb3DD() {
return new String[] {
"org/hibernate/ejb/test/xml/sequences/orm3.xml"
};
}
}

View File

@ -0,0 +1,34 @@
//$Id: $
package org.hibernate.ejb.test.xml.sequences;
import javax.persistence.EntityManager;
import org.hibernate.dialect.Dialect;
import org.hibernate.ejb.test.TestCase;
/**
* @author Emmanuel Bernard
*/
public class XmlTest extends TestCase {
public void testXmlMappingCorrectness() throws Exception {
EntityManager em = getOrCreateEntityManager();
em.close();
}
public Class[] getAnnotatedClasses() {
return new Class[0];
}
@Override
public boolean appliesTo(Dialect dialect) {
return dialect.supportsSequences();
}
@Override
public String[] getEjb3DD() {
return new String[] {
"org/hibernate/ejb/test/xml/sequences/orm.xml",
"org/hibernate/ejb/test/xml/sequences/orm2.xml",
};
}
}

View File

@ -0,0 +1,33 @@
<?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 orm_1_0.xsd"
version="1.0"
>
<persistence-unit-metadata>
<persistence-unit-defaults>
<schema>MY_SCHEMA</schema>
<catalog>MY_CATALOG</catalog>
<access>PROPERTY</access>
<cascade-persist/>
</persistence-unit-defaults>
</persistence-unit-metadata>
<package>org.hibernate.ejb.test.xml.sequences</package>
<entity class="Light" metadata-complete="true" access="FIELD">
<attributes>
<id name="name">
<column name="fld_id"/>
</id>
<basic name="power"></basic>
</attributes>
</entity>
<entity class="Article"
metadata-complete="false">
<attributes>
<id name="id">
<generated-value strategy="SEQUENCE"/>
</id>
</attributes>
</entity>
</entity-mappings>

View File

@ -0,0 +1,27 @@
<?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 orm_1_0.xsd"
version="1.0"
>
<entity class="org.hibernate.ejb.test.xml.sequences.Lighter" name="ALighter" access="FIELD" metadata-complete="true">
<attributes>
<id name="name">
<column name="fld_id"/>
</id>
<basic name="power"></basic>
</attributes>
</entity>
<!-- entity class="NoPackageEntity" name="ALighter" access="FIELD" metadata-complete="true">
<attributes>
<id name="id"/>
<basic name="name"/>
</attributes>
</entity -->
<embeddable class="NoPackageEntity" access="FIELD">
<attributes>
<basic name="name"/>
</attributes>
</embeddable>
</entity-mappings>

View File

@ -0,0 +1,55 @@
<?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="org.hibernate.ejb.test.xml.sequences.Employee" metadata-complete="false" access="FIELD">
<attributes>
<id name="id"/>
<basic name="name"/>
<embedded name="homeAddress">
<attribute-override name="street">
<column name="home_street"/>
</attribute-override>
<attribute-override name="city">
<column name="home_city"/>
</attribute-override>
<attribute-override name="state">
<column name="home_state"/>
</attribute-override>
<attribute-override name="zip">
<column name="home_zip"/>
</attribute-override>
</embedded>
<embedded name="mailAddress">
<attribute-override name="street">
<column name="mail_street"/>
</attribute-override>
<attribute-override name="city">
<column name="mail_city"/>
</attribute-override>
<attribute-override name="state">
<column name="mail_state"/>
</attribute-override>
<attribute-override name="zip">
<column name="mail_zip"/>
</attribute-override>
</embedded>
</attributes>
</entity>
<embeddable class="org.hibernate.ejb.test.xml.sequences.Address">
<attributes>
<basic name="street"/>
<basic name="city"/>
<basic name="state"/>
<basic name="zip"/>
</attributes>
</embeddable>
</entity-mappings>