r17 - in simexplorer-si-template/simexplorer-si-template-ejb3: . .settings build src src/java src/java/META-INF src/java/org src/java/org/codelutin src/java/org/codelutin/test src/java/org/codelutin/test/dao src/java/org/codelutin/test/entities src/java/org/codelutin/test/service
Author: glandais Date: 2007-10-30 19:01:31 +0000 (Tue, 30 Oct 2007) New Revision: 17 Added: simexplorer-si-template/simexplorer-si-template-ejb3/.classpath simexplorer-si-template/simexplorer-si-template-ejb3/.project simexplorer-si-template/simexplorer-si-template-ejb3/.settings/ simexplorer-si-template/simexplorer-si-template-ejb3/.settings/org.eclipse.jdt.core.prefs simexplorer-si-template/simexplorer-si-template-ejb3/.settings/org.eclipse.jst.common.project.facet.core.prefs simexplorer-si-template/simexplorer-si-template-ejb3/.settings/org.eclipse.wst.common.component simexplorer-si-template/simexplorer-si-template-ejb3/.settings/org.eclipse.wst.common.project.facet.core.xml simexplorer-si-template/simexplorer-si-template-ejb3/.settings/org.eclipse.wst.validation.prefs simexplorer-si-template/simexplorer-si-template-ejb3/build/ simexplorer-si-template/simexplorer-si-template-ejb3/build/classes/ simexplorer-si-template/simexplorer-si-template-ejb3/src/ simexplorer-si-template/simexplorer-si-template-ejb3/src/java/ simexplorer-si-template/simexplorer-si-template-ejb3/src/java/META-INF/ simexplorer-si-template/simexplorer-si-template-ejb3/src/java/META-INF/MANIFEST.MF simexplorer-si-template/simexplorer-si-template-ejb3/src/java/META-INF/jpa_orm_1_0.xsd simexplorer-si-template/simexplorer-si-template-ejb3/src/java/META-INF/orm.xml simexplorer-si-template/simexplorer-si-template-ejb3/src/java/META-INF/persistence.xml simexplorer-si-template/simexplorer-si-template-ejb3/src/java/org/ simexplorer-si-template/simexplorer-si-template-ejb3/src/java/org/codelutin/ simexplorer-si-template/simexplorer-si-template-ejb3/src/java/org/codelutin/test/ simexplorer-si-template/simexplorer-si-template-ejb3/src/java/org/codelutin/test/dao/ simexplorer-si-template/simexplorer-si-template-ejb3/src/java/org/codelutin/test/dao/DaoException.java simexplorer-si-template/simexplorer-si-template-ejb3/src/java/org/codelutin/test/dao/DaoProject.java simexplorer-si-template/simexplorer-si-template-ejb3/src/java/org/codelutin/test/dao/IDaoProject.java simexplorer-si-template/simexplorer-si-template-ejb3/src/java/org/codelutin/test/entities/ simexplorer-si-template/simexplorer-si-template-ejb3/src/java/org/codelutin/test/entities/BaseEntity.java simexplorer-si-template/simexplorer-si-template-ejb3/src/java/org/codelutin/test/entities/Project.java simexplorer-si-template/simexplorer-si-template-ejb3/src/java/org/codelutin/test/entities/Task.java simexplorer-si-template/simexplorer-si-template-ejb3/src/java/org/codelutin/test/service/ simexplorer-si-template/simexplorer-si-template-ejb3/src/java/org/codelutin/test/service/IServiceProject.java simexplorer-si-template/simexplorer-si-template-ejb3/src/java/org/codelutin/test/service/ServiceProject.java simexplorer-si-template/simexplorer-si-template-ejb3/src/java/postgres-ds.xml simexplorer-si-template/simexplorer-si-template-ejb3/src/lib/ Log: Initialisation du projet contenant les EJB et JPA Added: simexplorer-si-template/simexplorer-si-template-ejb3/.classpath =================================================================== --- simexplorer-si-template/simexplorer-si-template-ejb3/.classpath (rev 0) +++ simexplorer-si-template/simexplorer-si-template-ejb3/.classpath 2007-10-30 19:01:31 UTC (rev 17) @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src/java"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> + <classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.eclipse.jst.server.generic.runtimeTarget/JBoss v4.2"/> + <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/> + <classpathentry kind="output" path="build/classes"/> +</classpath> Added: simexplorer-si-template/simexplorer-si-template-ejb3/.project =================================================================== --- simexplorer-si-template/simexplorer-si-template-ejb3/.project (rev 0) +++ simexplorer-si-template/simexplorer-si-template-ejb3/.project 2007-10-30 19:01:31 UTC (rev 17) @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>simexplorer-si-template-ejb</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.wst.common.project.facet.core.builder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.wst.validation.validationbuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.wst.common.project.facet.core.nature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature> + <nature>org.eclipse.jem.workbench.JavaEMFNature</nature> + </natures> +</projectDescription> Added: simexplorer-si-template/simexplorer-si-template-ejb3/.settings/org.eclipse.jdt.core.prefs =================================================================== --- simexplorer-si-template/simexplorer-si-template-ejb3/.settings/org.eclipse.jdt.core.prefs (rev 0) +++ simexplorer-si-template/simexplorer-si-template-ejb3/.settings/org.eclipse.jdt.core.prefs 2007-10-30 19:01:31 UTC (rev 17) @@ -0,0 +1,7 @@ +#Tue Oct 30 11:38:59 CET 2007 +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 +org.eclipse.jdt.core.compiler.compliance=1.5 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.5 Added: simexplorer-si-template/simexplorer-si-template-ejb3/.settings/org.eclipse.jst.common.project.facet.core.prefs =================================================================== --- simexplorer-si-template/simexplorer-si-template-ejb3/.settings/org.eclipse.jst.common.project.facet.core.prefs (rev 0) +++ simexplorer-si-template/simexplorer-si-template-ejb3/.settings/org.eclipse.jst.common.project.facet.core.prefs 2007-10-30 19:01:31 UTC (rev 17) @@ -0,0 +1,4 @@ +#Tue Oct 30 11:38:59 CET 2007 +classpath.helper/org.eclipse.jdt.launching.JRE_CONTAINER/owners=jst.java\:5.0 +classpath.helper/org.eclipse.jst.server.core.container\:\:org.eclipse.jst.server.generic.runtimeTarget\:\:JBoss\ v4.2/owners=jst.ejb\:3.0 +eclipse.preferences.version=1 Added: simexplorer-si-template/simexplorer-si-template-ejb3/.settings/org.eclipse.wst.common.component =================================================================== --- simexplorer-si-template/simexplorer-si-template-ejb3/.settings/org.eclipse.wst.common.component (rev 0) +++ simexplorer-si-template/simexplorer-si-template-ejb3/.settings/org.eclipse.wst.common.component 2007-10-30 19:01:31 UTC (rev 17) @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project-modules id="moduleCoreId" project-version="1.5.0"> +<wb-module deploy-name="simexplorer-si-template-ejb"> +<wb-resource deploy-path="/" source-path="/src/java"/> +<property name="java-output-path" value="build/classes"/> +</wb-module> +</project-modules> Added: simexplorer-si-template/simexplorer-si-template-ejb3/.settings/org.eclipse.wst.common.project.facet.core.xml =================================================================== --- simexplorer-si-template/simexplorer-si-template-ejb3/.settings/org.eclipse.wst.common.project.facet.core.xml (rev 0) +++ simexplorer-si-template/simexplorer-si-template-ejb3/.settings/org.eclipse.wst.common.project.facet.core.xml 2007-10-30 19:01:31 UTC (rev 17) @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<faceted-project> + <runtime name="JBoss v4.2"/> + <fixed facet="jst.ejb"/> + <fixed facet="jst.java"/> + <installed facet="jst.java" version="5.0"/> + <installed facet="jst.ejb" version="3.0"/> +</faceted-project> Added: simexplorer-si-template/simexplorer-si-template-ejb3/.settings/org.eclipse.wst.validation.prefs =================================================================== --- simexplorer-si-template/simexplorer-si-template-ejb3/.settings/org.eclipse.wst.validation.prefs (rev 0) +++ simexplorer-si-template/simexplorer-si-template-ejb3/.settings/org.eclipse.wst.validation.prefs 2007-10-30 19:01:31 UTC (rev 17) @@ -0,0 +1,6 @@ +#Tue Oct 30 14:58:28 CET 2007 +DELEGATES_PREFERENCE=delegateValidatorListorg.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator\=org.eclipse.wst.wsdl.validation.internal.eclipse.Validator;org.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator\=org.eclipse.wst.xsd.core.internal.validation.eclipse.Validator; +USER_BUILD_PREFERENCE=enabledBuildValidatorListorg.eclipse.jst.jsp.core.internal.validation.JSPBatchValidator;org.eclipse.wst.html.internal.validation.HTMLValidator;org.eclipse.jst.j2ee.internal.classpathdep.ClasspathDependencyValidator;org.eclipse.jst.jsf.validation.internal.appconfig.AppConfigValidator;org.eclipse.wst.dtd.core.internal.validation.eclipse.Validator;org.eclipse.wst.wsi.ui.internal.WSIMessageValidator;org.eclipse.wst.xml.core.internal.validation.eclipse.Validator;org.eclipse.jst.jsf.validation.internal.JSPSemanticsValidator;org.eclipse.wst.common.componentcore.internal.ModuleCoreValidator;org.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator;org.eclipse.jst.jsp.core.internal.validation.JSPContentValidator;org.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator; +USER_MANUAL_PREFERENCE=enabledManualValidatorListorg.eclipse.jst.jsp.core.internal.validation.JSPBatchValidator;org.eclipse.wst.html.internal.validation.HTMLValidator;org.eclipse.jst.j2ee.internal.classpathdep.ClasspathDependencyValidator;org.eclipse.jst.jsf.validation.internal.appconfig.AppConfigValidator;org.eclipse.wst.dtd.core.internal.validation.eclipse.Validator;org.eclipse.wst.wsi.ui.internal.WSIMessageValidator;org.eclipse.wst.xml.core.internal.validation.eclipse.Validator;org.eclipse.jst.jsf.validation.internal.JSPSemanticsValidator;org.eclipse.wst.common.componentcore.internal.ModuleCoreValidator;org.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator;org.eclipse.jst.jsp.core.internal.validation.JSPContentValidator;org.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator; +USER_PREFERENCE=overrideGlobalPreferencesfalse +eclipse.preferences.version=1 Added: simexplorer-si-template/simexplorer-si-template-ejb3/src/java/META-INF/MANIFEST.MF =================================================================== --- simexplorer-si-template/simexplorer-si-template-ejb3/src/java/META-INF/MANIFEST.MF (rev 0) +++ simexplorer-si-template/simexplorer-si-template-ejb3/src/java/META-INF/MANIFEST.MF 2007-10-30 19:01:31 UTC (rev 17) @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Class-Path: + Added: simexplorer-si-template/simexplorer-si-template-ejb3/src/java/META-INF/jpa_orm_1_0.xsd =================================================================== --- simexplorer-si-template/simexplorer-si-template-ejb3/src/java/META-INF/jpa_orm_1_0.xsd (rev 0) +++ simexplorer-si-template/simexplorer-si-template-ejb3/src/java/META-INF/jpa_orm_1_0.xsd 2007-10-30 19:01:31 UTC (rev 17) @@ -0,0 +1,1516 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Java Persistence API object-relational mapping file schema --> +<xsd:schema targetNamespace="http://java.sun.com/xml/ns/persistence/orm" + xmlns:orm="http://java.sun.com/xml/ns/persistence/orm" + xmlns:xsd="http://www.w3.org/2001/XMLSchema" + elementFormDefault="qualified" + attributeFormDefault="unqualified" + version="1.0"> + + <xsd:annotation> + <xsd:documentation> + @(#)orm_1_0.xsd 1.0 Feb 14 2006 + </xsd:documentation> + </xsd:annotation> + <xsd:annotation> + <xsd:documentation><![CDATA[ + + This is the XML Schema for the persistence object-relational + mapping file. + The file may be named "META-INF/orm.xml" in the persistence + archive or it may be named some other name which would be + used to locate the file as resource on the classpath. + + ]]></xsd:documentation> + </xsd:annotation> + + <xsd:complexType name="emptyType"/> + + <xsd:simpleType name="versionType"> + <xsd:restriction base="xsd:token"> + <xsd:pattern value="[0-9]+(\.[0-9]+)*"/> + </xsd:restriction> + </xsd:simpleType> + + <!-- **************************************************** --> + + <xsd:element name="entity-mappings"> + <xsd:complexType> + <xsd:annotation> + <xsd:documentation> + + The entity-mappings element is the root element of an mapping + file. It contains the following four types of elements: + + 1. The persistence-unit-metadata element contains metadata + for the entire persistence unit. It is undefined if this element + occurs in multiple mapping files within the same persistence unit. + + 2. The package, schema, catalog and access elements apply to all of + the entity, mapped-superclass and embeddable elements defined in + the same file in which they occur. + + 3. The sequence-generator, table-generator, named-query, + named-native-query and sql-result-set-mapping elements are global + to the persistence unit. It is undefined to have more than one + sequence-generator or table-generator of the same name in the same + or different mapping files in a persistence unit. It is also + undefined to have more than one named-query or named-native-query + of the same name in the same or different mapping files in a + persistence unit. + + 4. The entity, mapped-superclass and embeddable elements each define + the mapping information for a managed persistent class. The mapping + information contained in these elements may be complete or it may + be partial. + + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="description" type="xsd:string" + minOccurs="0"/> + <xsd:element name="persistence-unit-metadata" + type="orm:persistence-unit-metadata" + minOccurs="0"/> + <xsd:element name="package" type="xsd:string" + minOccurs="0"/> + <xsd:element name="schema" type="xsd:string" + minOccurs="0"/> + <xsd:element name="catalog" type="xsd:string" + minOccurs="0"/> + <xsd:element name="access" type="orm:access-type" + minOccurs="0"/> + <xsd:element name="sequence-generator" type="orm:sequence-generator" + minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="table-generator" type="orm:table-generator" + minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="named-query" type="orm:named-query" + minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="named-native-query" type="orm:named-native-query" + minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="sql-result-set-mapping" + type="orm:sql-result-set-mapping" + minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="mapped-superclass" type="orm:mapped-superclass" + minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="entity" type="orm:entity" + minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="embeddable" type="orm:embeddable" + minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="version" type="orm:versionType" + fixed="1.0" use="required"/> + </xsd:complexType> + </xsd:element> + + <!-- **************************************************** --> + + <xsd:complexType name="persistence-unit-metadata"> + <xsd:annotation> + <xsd:documentation> + + Metadata that applies to the persistence unit and not just to + the mapping file in which it is contained. + + If the xml-mapping-metadata-complete element is specified then + the complete set of mapping metadata for the persistence unit + is contained in the XML mapping files for the persistence unit. + + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="xml-mapping-metadata-complete" type="orm:emptyType" + minOccurs="0"/> + <xsd:element name="persistence-unit-defaults" + type="orm:persistence-unit-defaults" + minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:complexType name="persistence-unit-defaults"> + <xsd:annotation> + <xsd:documentation> + + These defaults are applied to the persistence unit as a whole + unless they are overridden by local annotation or XML + element settings. + + schema - Used as the schema for all tables or secondary tables + that apply to the persistence unit + catalog - Used as the catalog for all tables or secondary tables + that apply to the persistence unit + access - Used as the access type for all managed classes in + the persistence unit + cascade-persist - Adds cascade-persist to the set of cascade options + in entity relationships of the persistence unit + entity-listeners - List of default entity listeners to be invoked + on each entity in the persistence unit. + + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="schema" type="xsd:string" + minOccurs="0"/> + <xsd:element name="catalog" type="xsd:string" + minOccurs="0"/> + <xsd:element name="access" type="orm:access-type" + minOccurs="0"/> + <xsd:element name="cascade-persist" type="orm:emptyType" + minOccurs="0"/> + <xsd:element name="entity-listeners" type="orm:entity-listeners" + minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:complexType name="entity"> + <xsd:annotation> + <xsd:documentation> + + Defines the settings and mappings for an entity. Is allowed to be + sparsely populated and used in conjunction with the annotations. + Alternatively, the metadata-complete attribute can be used to + indicate that no annotations on the entity class (and its fields + or properties) are to be processed. If this is the case then + the defaulting rules for the entity and its subelements will + be recursively applied. + + @Target(TYPE) @Retention(RUNTIME) + public @interface Entity { + String name() default ""; + } + + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="description" type="xsd:string" minOccurs="0"/> + <xsd:element name="table" type="orm:table" + minOccurs="0"/> + <xsd:element name="secondary-table" type="orm:secondary-table" + minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="primary-key-join-column" + type="orm:primary-key-join-column" + minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="id-class" type="orm:id-class" minOccurs="0"/> + <xsd:element name="inheritance" type="orm:inheritance" minOccurs="0"/> + <xsd:element name="discriminator-value" type="orm:discriminator-value" + minOccurs="0"/> + <xsd:element name="discriminator-column" + type="orm:discriminator-column" + minOccurs="0"/> + <xsd:element name="sequence-generator" type="orm:sequence-generator" + minOccurs="0"/> + <xsd:element name="table-generator" type="orm:table-generator" + minOccurs="0"/> + <xsd:element name="named-query" type="orm:named-query" + minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="named-native-query" type="orm:named-native-query" + minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="sql-result-set-mapping" + type="orm:sql-result-set-mapping" + minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="exclude-default-listeners" type="orm:emptyType" + minOccurs="0"/> + <xsd:element name="exclude-superclass-listeners" type="orm:emptyType" + minOccurs="0"/> + <xsd:element name="entity-listeners" type="orm:entity-listeners" + minOccurs="0"/> + <xsd:element name="pre-persist" type="orm:pre-persist" minOccurs="0"/> + <xsd:element name="post-persist" type="orm:post-persist" + minOccurs="0"/> + <xsd:element name="pre-remove" type="orm:pre-remove" minOccurs="0"/> + <xsd:element name="post-remove" type="orm:post-remove" minOccurs="0"/> + <xsd:element name="pre-update" type="orm:pre-update" minOccurs="0"/> + <xsd:element name="post-update" type="orm:post-update" minOccurs="0"/> + <xsd:element name="post-load" type="orm:post-load" minOccurs="0"/> + <xsd:element name="attribute-override" type="orm:attribute-override" + minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="association-override" + type="orm:association-override" + minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="attributes" type="orm:attributes" minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string"/> + <xsd:attribute name="class" type="xsd:string" use="required"/> + <xsd:attribute name="access" type="orm:access-type"/> + <xsd:attribute name="metadata-complete" type="xsd:boolean"/> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:complexType name="attributes"> + <xsd:annotation> + <xsd:documentation> + + This element contains the entity field or property mappings. + It may be sparsely populated to include only a subset of the + fields or properties. If metadata-complete for the entity is true + then the remainder of the attributes will be defaulted according + to the default rules. + + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:choice> + <xsd:element name="id" type="orm:id" + minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="embedded-id" type="orm:embedded-id" + minOccurs="0"/> + </xsd:choice> + <xsd:element name="basic" type="orm:basic" + minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="version" type="orm:version" + minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="many-to-one" type="orm:many-to-one" + minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="one-to-many" type="orm:one-to-many" + minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="one-to-one" type="orm:one-to-one" + minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="many-to-many" type="orm:many-to-many" + minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="embedded" type="orm:embedded" + minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="transient" type="orm:transient" + minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:simpleType name="access-type"> + <xsd:annotation> + <xsd:documentation> + + This element determines how the persistence provider accesses the + state of an entity or embedded object. + + </xsd:documentation> + </xsd:annotation> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="PROPERTY"/> + <xsd:enumeration value="FIELD"/> + </xsd:restriction> + </xsd:simpleType> + + <!-- **************************************************** --> + + <xsd:complexType name="entity-listeners"> + <xsd:annotation> + <xsd:documentation> + + @Target({TYPE}) @Retention(RUNTIME) + public @interface EntityListeners { + Class[] value(); + } + + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="entity-listener" type="orm:entity-listener" + minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:complexType name="entity-listener"> + <xsd:annotation> + <xsd:documentation> + + Defines an entity listener to be invoked at lifecycle events + for the entities that list this listener. + + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="pre-persist" type="orm:pre-persist" minOccurs="0"/> + <xsd:element name="post-persist" type="orm:post-persist" + minOccurs="0"/> + <xsd:element name="pre-remove" type="orm:pre-remove" minOccurs="0"/> + <xsd:element name="post-remove" type="orm:post-remove" minOccurs="0"/> + <xsd:element name="pre-update" type="orm:pre-update" minOccurs="0"/> + <xsd:element name="post-update" type="orm:post-update" minOccurs="0"/> + <xsd:element name="post-load" type="orm:post-load" minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="class" type="xsd:string" use="required"/> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:complexType name="pre-persist"> + <xsd:annotation> + <xsd:documentation> + + @Target({METHOD}) @Retention(RUNTIME) + public @interface PrePersist {} + + </xsd:documentation> + </xsd:annotation> + <xsd:attribute name="method-name" type="xsd:string" use="required"/> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:complexType name="post-persist"> + <xsd:annotation> + <xsd:documentation> + + @Target({METHOD}) @Retention(RUNTIME) + public @interface PostPersist {} + + </xsd:documentation> + </xsd:annotation> + <xsd:attribute name="method-name" type="xsd:string" use="required"/> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:complexType name="pre-remove"> + <xsd:annotation> + <xsd:documentation> + + @Target({METHOD}) @Retention(RUNTIME) + public @interface PreRemove {} + + </xsd:documentation> + </xsd:annotation> + <xsd:attribute name="method-name" type="xsd:string" use="required"/> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:complexType name="post-remove"> + <xsd:annotation> + <xsd:documentation> + + @Target({METHOD}) @Retention(RUNTIME) + public @interface PostRemove {} + + </xsd:documentation> + </xsd:annotation> + <xsd:attribute name="method-name" type="xsd:string" use="required"/> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:complexType name="pre-update"> + <xsd:annotation> + <xsd:documentation> + + @Target({METHOD}) @Retention(RUNTIME) + public @interface PreUpdate {} + + </xsd:documentation> + </xsd:annotation> + <xsd:attribute name="method-name" type="xsd:string" use="required"/> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:complexType name="post-update"> + <xsd:annotation> + <xsd:documentation> + + @Target({METHOD}) @Retention(RUNTIME) + public @interface PostUpdate {} + + </xsd:documentation> + </xsd:annotation> + <xsd:attribute name="method-name" type="xsd:string" use="required"/> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:complexType name="post-load"> + <xsd:annotation> + <xsd:documentation> + + @Target({METHOD}) @Retention(RUNTIME) + public @interface PostLoad {} + + </xsd:documentation> + </xsd:annotation> + <xsd:attribute name="method-name" type="xsd:string" use="required"/> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:complexType name="query-hint"> + <xsd:annotation> + <xsd:documentation> + + @Target({}) @Retention(RUNTIME) + public @interface QueryHint { + String name(); + String value(); + } + + </xsd:documentation> + </xsd:annotation> + <xsd:attribute name="name" type="xsd:string" use="required"/> + <xsd:attribute name="value" type="xsd:string" use="required"/> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:complexType name="named-query"> + <xsd:annotation> + <xsd:documentation> + + @Target({TYPE}) @Retention(RUNTIME) + public @interface NamedQuery { + String name(); + String query(); + QueryHint[] hints() default {}; + } + + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="query" type="xsd:string"/> + <xsd:element name="hint" type="orm:query-hint" + minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required"/> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:complexType name="named-native-query"> + <xsd:annotation> + <xsd:documentation> + + @Target({TYPE}) @Retention(RUNTIME) + public @interface NamedNativeQuery { + String name(); + String query(); + QueryHint[] hints() default {}; + Class resultClass() default void.class; + String resultSetMapping() default ""; //named SqlResultSetMapping + } + + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="query" type="xsd:string"/> + <xsd:element name="hint" type="orm:query-hint" + minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required"/> + <xsd:attribute name="result-class" type="xsd:string"/> + <xsd:attribute name="result-set-mapping" type="xsd:string"/> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:complexType name="sql-result-set-mapping"> + <xsd:annotation> + <xsd:documentation> + + @Target({TYPE}) @Retention(RUNTIME) + public @interface SqlResultSetMapping { + String name(); + EntityResult[] entities() default {}; + ColumnResult[] columns() default {}; + } + + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="entity-result" type="orm:entity-result" + minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="column-result" type="orm:column-result" + minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required"/> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:complexType name="entity-result"> + <xsd:annotation> + <xsd:documentation> + + @Target({}) @Retention(RUNTIME) + public @interface EntityResult { + Class entityClass(); + FieldResult[] fields() default {}; + String discriminatorColumn() default ""; + } + + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="field-result" type="orm:field-result" + minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="entity-class" type="xsd:string" use="required"/> + <xsd:attribute name="discriminator-column" type="xsd:string"/> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:complexType name="field-result"> + <xsd:annotation> + <xsd:documentation> + + @Target({}) @Retention(RUNTIME) + public @interface FieldResult { + String name(); + String column(); + } + + </xsd:documentation> + </xsd:annotation> + <xsd:attribute name="name" type="xsd:string" use="required"/> + <xsd:attribute name="column" type="xsd:string" use="required"/> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:complexType name="column-result"> + <xsd:annotation> + <xsd:documentation> + + @Target({}) @Retention(RUNTIME) + public @interface ColumnResult { + String name(); + } + + </xsd:documentation> + </xsd:annotation> + <xsd:attribute name="name" type="xsd:string" use="required"/> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:complexType name="table"> + <xsd:annotation> + <xsd:documentation> + + @Target({TYPE}) @Retention(RUNTIME) + public @interface Table { + String name() default ""; + String catalog() default ""; + String schema() default ""; + UniqueConstraint[] uniqueConstraints() default {}; + } + + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="unique-constraint" type="orm:unique-constraint" + minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string"/> + <xsd:attribute name="catalog" type="xsd:string"/> + <xsd:attribute name="schema" type="xsd:string"/> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:complexType name="secondary-table"> + <xsd:annotation> + <xsd:documentation> + + @Target({TYPE}) @Retention(RUNTIME) + public @interface SecondaryTable { + String name(); + String catalog() default ""; + String schema() default ""; + PrimaryKeyJoinColumn[] pkJoinColumns() default {}; + UniqueConstraint[] uniqueConstraints() default {}; + } + + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="primary-key-join-column" + type="orm:primary-key-join-column" + minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="unique-constraint" type="orm:unique-constraint" + minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required"/> + <xsd:attribute name="catalog" type="xsd:string"/> + <xsd:attribute name="schema" type="xsd:string"/> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:complexType name="unique-constraint"> + <xsd:annotation> + <xsd:documentation> + + @Target({}) @Retention(RUNTIME) + public @interface UniqueConstraint { + String[] columnNames(); + } + + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="column-name" type="xsd:string" + maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:complexType name="column"> + <xsd:annotation> + <xsd:documentation> + + @Target({METHOD, FIELD}) @Retention(RUNTIME) + public @interface Column { + String name() default ""; + boolean unique() default false; + boolean nullable() default true; + boolean insertable() default true; + boolean updatable() default true; + String columnDefinition() default ""; + String table() default ""; + int length() default 255; + int precision() default 0; // decimal precision + int scale() default 0; // decimal scale + } + + </xsd:documentation> + </xsd:annotation> + <xsd:attribute name="name" type="xsd:string"/> + <xsd:attribute name="unique" type="xsd:boolean"/> + <xsd:attribute name="nullable" type="xsd:boolean"/> + <xsd:attribute name="insertable" type="xsd:boolean"/> + <xsd:attribute name="updatable" type="xsd:boolean"/> + <xsd:attribute name="column-definition" type="xsd:string"/> + <xsd:attribute name="table" type="xsd:string"/> + <xsd:attribute name="length" type="xsd:int"/> + <xsd:attribute name="precision" type="xsd:int"/> + <xsd:attribute name="scale" type="xsd:int"/> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:complexType name="join-column"> + <xsd:annotation> + <xsd:documentation> + + @Target({METHOD, FIELD}) @Retention(RUNTIME) + public @interface JoinColumn { + String name() default ""; + String referencedColumnName() default ""; + boolean unique() default false; + boolean nullable() default true; + boolean insertable() default true; + boolean updatable() default true; + String columnDefinition() default ""; + String table() default ""; + } + + </xsd:documentation> + </xsd:annotation> + <xsd:attribute name="name" type="xsd:string"/> + <xsd:attribute name="referenced-column-name" type="xsd:string"/> + <xsd:attribute name="unique" type="xsd:boolean"/> + <xsd:attribute name="nullable" type="xsd:boolean"/> + <xsd:attribute name="insertable" type="xsd:boolean"/> + <xsd:attribute name="updatable" type="xsd:boolean"/> + <xsd:attribute name="column-definition" type="xsd:string"/> + <xsd:attribute name="table" type="xsd:string"/> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:simpleType name="generation-type"> + <xsd:annotation> + <xsd:documentation> + + public enum GenerationType { TABLE, SEQUENCE, IDENTITY, AUTO }; + + </xsd:documentation> + </xsd:annotation> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="TABLE"/> + <xsd:enumeration value="SEQUENCE"/> + <xsd:enumeration value="IDENTITY"/> + <xsd:enumeration value="AUTO"/> + </xsd:restriction> + </xsd:simpleType> + + <!-- **************************************************** --> + + <xsd:complexType name="attribute-override"> + <xsd:annotation> + <xsd:documentation> + + @Target({TYPE, METHOD, FIELD}) @Retention(RUNTIME) + public @interface AttributeOverride { + String name(); + Column column(); + } + + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="column" type="orm:column"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required"/> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:complexType name="association-override"> + <xsd:annotation> + <xsd:documentation> + + @Target({TYPE, METHOD, FIELD}) @Retention(RUNTIME) + public @interface AssociationOverride { + String name(); + JoinColumn[] joinColumns(); + } + + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="join-column" type="orm:join-column" + maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required"/> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:complexType name="id-class"> + <xsd:annotation> + <xsd:documentation> + + @Target({TYPE}) @Retention(RUNTIME) + public @interface IdClass { + Class value(); + } + + </xsd:documentation> + </xsd:annotation> + <xsd:attribute name="class" type="xsd:string" use="required"/> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:complexType name="id"> + <xsd:annotation> + <xsd:documentation> + + @Target({METHOD, FIELD}) @Retention(RUNTIME) + public @interface Id {} + + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="column" type="orm:column" + minOccurs="0"/> + <xsd:element name="generated-value" type="orm:generated-value" + minOccurs="0"/> + <xsd:element name="temporal" type="orm:temporal" + minOccurs="0"/> + <xsd:element name="table-generator" type="orm:table-generator" + minOccurs="0"/> + <xsd:element name="sequence-generator" type="orm:sequence-generator" + minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required"/> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:complexType name="embedded-id"> + <xsd:annotation> + <xsd:documentation> + + @Target({METHOD, FIELD}) @Retention(RUNTIME) + public @interface EmbeddedId {} + + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="attribute-override" type="orm:attribute-override" + minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required"/> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:complexType name="transient"> + <xsd:annotation> + <xsd:documentation> + + @Target({METHOD, FIELD}) @Retention(RUNTIME) + public @interface Transient {} + + </xsd:documentation> + </xsd:annotation> + <xsd:attribute name="name" type="xsd:string" use="required"/> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:complexType name="version"> + <xsd:annotation> + <xsd:documentation> + + @Target({METHOD, FIELD}) @Retention(RUNTIME) + public @interface Version {} + + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="column" type="orm:column" minOccurs="0"/> + <xsd:element name="temporal" type="orm:temporal" minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required"/> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:complexType name="basic"> + <xsd:annotation> + <xsd:documentation> + + @Target({METHOD, FIELD}) @Retention(RUNTIME) + public @interface Basic { + FetchType fetch() default EAGER; + boolean optional() default true; + } + + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="column" type="orm:column" minOccurs="0"/> + <xsd:choice> + <xsd:element name="lob" type="orm:lob" minOccurs="0"/> + <xsd:element name="temporal" type="orm:temporal" minOccurs="0"/> + <xsd:element name="enumerated" type="orm:enumerated" minOccurs="0"/> + </xsd:choice> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required"/> + <xsd:attribute name="fetch" type="orm:fetch-type"/> + <xsd:attribute name="optional" type="xsd:boolean"/> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:simpleType name="fetch-type"> + <xsd:annotation> + <xsd:documentation> + + public enum FetchType { LAZY, EAGER }; + + </xsd:documentation> + </xsd:annotation> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="LAZY"/> + <xsd:enumeration value="EAGER"/> + </xsd:restriction> + </xsd:simpleType> + + <!-- **************************************************** --> + + <xsd:complexType name="lob"> + <xsd:annotation> + <xsd:documentation> + + @Target({METHOD, FIELD}) @Retention(RUNTIME) + public @interface Lob {} + + </xsd:documentation> + </xsd:annotation> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:simpleType name="temporal"> + <xsd:annotation> + <xsd:documentation> + + @Target({METHOD, FIELD}) @Retention(RUNTIME) + public @interface Temporal { + TemporalType value(); + } + + </xsd:documentation> + </xsd:annotation> + <xsd:restriction base="orm:temporal-type"/> + </xsd:simpleType> + + <!-- **************************************************** --> + + <xsd:simpleType name="temporal-type"> + <xsd:annotation> + <xsd:documentation> + + public enum TemporalType { + DATE, // java.sql.Date + TIME, // java.sql.Time + TIMESTAMP // java.sql.Timestamp + } + + </xsd:documentation> + </xsd:annotation> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="DATE"/> + <xsd:enumeration value="TIME"/> + <xsd:enumeration value="TIMESTAMP"/> + </xsd:restriction> + </xsd:simpleType> + + <!-- **************************************************** --> + + <xsd:simpleType name="enumerated"> + <xsd:annotation> + <xsd:documentation> + + @Target({METHOD, FIELD}) @Retention(RUNTIME) + public @interface Enumerated { + EnumType value() default ORDINAL; + } + + </xsd:documentation> + </xsd:annotation> + <xsd:restriction base="orm:enum-type"/> + </xsd:simpleType> + + <!-- **************************************************** --> + + <xsd:simpleType name="enum-type"> + <xsd:annotation> + <xsd:documentation> + + public enum EnumType { + ORDINAL, + STRING + } + + </xsd:documentation> + </xsd:annotation> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="ORDINAL"/> + <xsd:enumeration value="STRING"/> + </xsd:restriction> + </xsd:simpleType> + + <!-- **************************************************** --> + + <xsd:complexType name="many-to-one"> + <xsd:annotation> + <xsd:documentation> + + @Target({METHOD, FIELD}) @Retention(RUNTIME) + public @interface ManyToOne { + Class targetEntity() default void.class; + CascadeType[] cascade() default {}; + FetchType fetch() default EAGER; + boolean optional() default true; + } + + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:choice> + <xsd:element name="join-column" type="orm:join-column" + minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="join-table" type="orm:join-table" + minOccurs="0"/> + </xsd:choice> + <xsd:element name="cascade" type="orm:cascade-type" + minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required"/> + <xsd:attribute name="target-entity" type="xsd:string"/> + <xsd:attribute name="fetch" type="orm:fetch-type"/> + <xsd:attribute name="optional" type="xsd:boolean"/> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:complexType name="cascade-type"> + <xsd:annotation> + <xsd:documentation> + + public enum CascadeType { ALL, PERSIST, MERGE, REMOVE, REFRESH}; + + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="cascade-all" type="orm:emptyType" + minOccurs="0"/> + <xsd:element name="cascade-persist" type="orm:emptyType" + minOccurs="0"/> + <xsd:element name="cascade-merge" type="orm:emptyType" + minOccurs="0"/> + <xsd:element name="cascade-remove" type="orm:emptyType" + minOccurs="0"/> + <xsd:element name="cascade-refresh" type="orm:emptyType" + minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:complexType name="one-to-one"> + <xsd:annotation> + <xsd:documentation> + + @Target({METHOD, FIELD}) @Retention(RUNTIME) + public @interface OneToOne { + Class targetEntity() default void.class; + CascadeType[] cascade() default {}; + FetchType fetch() default EAGER; + boolean optional() default true; + String mappedBy() default ""; + } + + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:choice> + <xsd:element name="primary-key-join-column" + type="orm:primary-key-join-column" + minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="join-column" type="orm:join-column" + minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="join-table" type="orm:join-table" + minOccurs="0"/> + </xsd:choice> + <xsd:element name="cascade" type="orm:cascade-type" + minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required"/> + <xsd:attribute name="target-entity" type="xsd:string"/> + <xsd:attribute name="fetch" type="orm:fetch-type"/> + <xsd:attribute name="optional" type="xsd:boolean"/> + <xsd:attribute name="mapped-by" type="xsd:string"/> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:complexType name="one-to-many"> + <xsd:annotation> + <xsd:documentation> + + @Target({METHOD, FIELD}) @Retention(RUNTIME) + public @interface OneToMany { + Class targetEntity() default void.class; + CascadeType[] cascade() default {}; + FetchType fetch() default LAZY; + String mappedBy() default ""; + } + + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="order-by" type="orm:order-by" + minOccurs="0"/> + <xsd:element name="map-key" type="orm:map-key" + minOccurs="0"/> + <xsd:choice> + <xsd:element name="join-table" type="orm:join-table" + minOccurs="0"/> + <xsd:element name="join-column" type="orm:join-column" + minOccurs="0" maxOccurs="unbounded"/> + </xsd:choice> + <xsd:element name="cascade" type="orm:cascade-type" + minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required"/> + <xsd:attribute name="target-entity" type="xsd:string"/> + <xsd:attribute name="fetch" type="orm:fetch-type"/> + <xsd:attribute name="mapped-by" type="xsd:string"/> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:complexType name="join-table"> + <xsd:annotation> + <xsd:documentation> + + @Target({METHOD, FIELD}) @Retention(RUNTIME) + public @interface JoinTable { + String name() default ""; + String catalog() default ""; + String schema() default ""; + JoinColumn[] joinColumns() default {}; + JoinColumn[] inverseJoinColumns() default {}; + UniqueConstraint[] uniqueConstraints() default {}; + } + + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="join-column" type="orm:join-column" + minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="inverse-join-column" type="orm:join-column" + minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="unique-constraint" type="orm:unique-constraint" + minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string"/> + <xsd:attribute name="catalog" type="xsd:string"/> + <xsd:attribute name="schema" type="xsd:string"/> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:complexType name="many-to-many"> + <xsd:annotation> + <xsd:documentation> + + @Target({METHOD, FIELD}) @Retention(RUNTIME) + public @interface ManyToMany { + Class targetEntity() default void.class; + CascadeType[] cascade() default {}; + FetchType fetch() default LAZY; + String mappedBy() default ""; + } + + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="order-by" type="orm:order-by" + minOccurs="0"/> + <xsd:element name="map-key" type="orm:map-key" + minOccurs="0"/> + <xsd:element name="join-table" type="orm:join-table" + minOccurs="0"/> + <xsd:element name="cascade" type="orm:cascade-type" + minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required"/> + <xsd:attribute name="target-entity" type="xsd:string"/> + <xsd:attribute name="fetch" type="orm:fetch-type"/> + <xsd:attribute name="mapped-by" type="xsd:string"/> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:complexType name="generated-value"> + <xsd:annotation> + <xsd:documentation> + + @Target({METHOD, FIELD}) @Retention(RUNTIME) + public @interface GeneratedValue { + GenerationType strategy() default AUTO; + String generator() default ""; + } + + </xsd:documentation> + </xsd:annotation> + <xsd:attribute name="strategy" type="orm:generation-type"/> + <xsd:attribute name="generator" type="xsd:string"/> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:complexType name="map-key"> + <xsd:annotation> + <xsd:documentation> + + @Target({METHOD, FIELD}) @Retention(RUNTIME) + public @interface MapKey { + String name() default ""; + } + + </xsd:documentation> + </xsd:annotation> + <xsd:attribute name="name" type="xsd:string"/> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:simpleType name="order-by"> + <xsd:annotation> + <xsd:documentation> + + @Target({METHOD, FIELD}) @Retention(RUNTIME) + public @interface OrderBy { + String value() default ""; + } + + </xsd:documentation> + </xsd:annotation> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + + <!-- **************************************************** --> + + <xsd:complexType name="inheritance"> + <xsd:annotation> + <xsd:documentation> + + @Target({TYPE}) @Retention(RUNTIME) + public @interface Inheritance { + InheritanceType strategy() default SINGLE_TABLE; + } + + </xsd:documentation> + </xsd:annotation> + <xsd:attribute name="strategy" type="orm:inheritance-type"/> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:simpleType name="inheritance-type"> + <xsd:annotation> + <xsd:documentation> + + public enum InheritanceType + { SINGLE_TABLE, JOINED, TABLE_PER_CLASS}; + + </xsd:documentation> + </xsd:annotation> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="SINGLE_TABLE"/> + <xsd:enumeration value="JOINED"/> + <xsd:enumeration value="TABLE_PER_CLASS"/> + </xsd:restriction> + </xsd:simpleType> + + <!-- **************************************************** --> + + <xsd:simpleType name="discriminator-value"> + <xsd:annotation> + <xsd:documentation> + + @Target({TYPE}) @Retention(RUNTIME) + public @interface DiscriminatorValue { + String value(); + } + + </xsd:documentation> + </xsd:annotation> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + + <!-- **************************************************** --> + + <xsd:simpleType name="discriminator-type"> + <xsd:annotation> + <xsd:documentation> + + public enum DiscriminatorType { STRING, CHAR, INTEGER }; + + </xsd:documentation> + </xsd:annotation> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="STRING"/> + <xsd:enumeration value="CHAR"/> + <xsd:enumeration value="INTEGER"/> + </xsd:restriction> + </xsd:simpleType> + + <!-- **************************************************** --> + + <xsd:complexType name="primary-key-join-column"> + <xsd:annotation> + <xsd:documentation> + + @Target({TYPE, METHOD, FIELD}) @Retention(RUNTIME) + public @interface PrimaryKeyJoinColumn { + String name() default ""; + String referencedColumnName() default ""; + String columnDefinition() default ""; + } + + </xsd:documentation> + </xsd:annotation> + <xsd:attribute name="name" type="xsd:string"/> + <xsd:attribute name="referenced-column-name" type="xsd:string"/> + <xsd:attribute name="column-definition" type="xsd:string"/> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:complexType name="discriminator-column"> + <xsd:annotation> + <xsd:documentation> + + @Target({TYPE}) @Retention(RUNTIME) + public @interface DiscriminatorColumn { + String name() default "DTYPE"; + DiscriminatorType discriminatorType() default STRING; + String columnDefinition() default ""; + int length() default 31; + } + + </xsd:documentation> + </xsd:annotation> + <xsd:attribute name="name" type="xsd:string"/> + <xsd:attribute name="discriminator-type" type="orm:discriminator-type"/> + <xsd:attribute name="column-definition" type="xsd:string"/> + <xsd:attribute name="length" type="xsd:int"/> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:complexType name="embeddable"> + <xsd:annotation> + <xsd:documentation> + + Defines the settings and mappings for embeddable objects. Is + allowed to be sparsely populated and used in conjunction with + the annotations. Alternatively, the metadata-complete attribute + can be used to indicate that no annotations are to be processed + in the class. If this is the case then the defaulting rules will + be recursively applied. + + @Target({TYPE}) @Retention(RUNTIME) + public @interface Embeddable {} + + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="description" type="xsd:string" minOccurs="0"/> + <xsd:element name="attributes" type="orm:embeddable-attributes" + minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="class" type="xsd:string" use="required"/> + <xsd:attribute name="access" type="orm:access-type"/> + <xsd:attribute name="metadata-complete" type="xsd:boolean"/> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:complexType name="embeddable-attributes"> + <xsd:sequence> + <xsd:element name="basic" type="orm:basic" + minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="transient" type="orm:transient" + minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:complexType name="embedded"> + <xsd:annotation> + <xsd:documentation> + + @Target({METHOD, FIELD}) @Retention(RUNTIME) + public @interface Embedded {} + + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="attribute-override" type="orm:attribute-override" + minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required"/> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:complexType name="mapped-superclass"> + <xsd:annotation> + <xsd:documentation> + + Defines the settings and mappings for a mapped superclass. Is + allowed to be sparsely populated and used in conjunction with + the annotations. Alternatively, the metadata-complete attribute + can be used to indicate that no annotations are to be processed + If this is the case then the defaulting rules will be recursively + applied. + + @Target(TYPE) @Retention(RUNTIME) + public @interface MappedSuperclass{} + + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="description" type="xsd:string" minOccurs="0"/> + <xsd:element name="id-class" type="orm:id-class" minOccurs="0"/> + <xsd:element name="exclude-default-listeners" type="orm:emptyType" + minOccurs="0"/> + <xsd:element name="exclude-superclass-listeners" type="orm:emptyType" + minOccurs="0"/> + <xsd:element name="entity-listeners" type="orm:entity-listeners" + minOccurs="0"/> + <xsd:element name="pre-persist" type="orm:pre-persist" minOccurs="0"/> + <xsd:element name="post-persist" type="orm:post-persist" + minOccurs="0"/> + <xsd:element name="pre-remove" type="orm:pre-remove" minOccurs="0"/> + <xsd:element name="post-remove" type="orm:post-remove" minOccurs="0"/> + <xsd:element name="pre-update" type="orm:pre-update" minOccurs="0"/> + <xsd:element name="post-update" type="orm:post-update" minOccurs="0"/> + <xsd:element name="post-load" type="orm:post-load" minOccurs="0"/> + <xsd:element name="attributes" type="orm:attributes" minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="class" type="xsd:string" use="required"/> + <xsd:attribute name="access" type="orm:access-type"/> + <xsd:attribute name="metadata-complete" type="xsd:boolean"/> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:complexType name="sequence-generator"> + <xsd:annotation> + <xsd:documentation> + + @Target({TYPE, METHOD, FIELD}) @Retention(RUNTIME) + public @interface SequenceGenerator { + String name(); + String sequenceName() default ""; + int initialValue() default 1; + int allocationSize() default 50; + } + + </xsd:documentation> + </xsd:annotation> + <xsd:attribute name="name" type="xsd:string" use="required"/> + <xsd:attribute name="sequence-name" type="xsd:string"/> + <xsd:attribute name="initial-value" type="xsd:int"/> + <xsd:attribute name="allocation-size" type="xsd:int"/> + </xsd:complexType> + + <!-- **************************************************** --> + + <xsd:complexType name="table-generator"> + <xsd:annotation> + <xsd:documentation> + + @Target({TYPE, METHOD, FIELD}) @Retention(RUNTIME) + public @interface TableGenerator { + String name(); + String table() default ""; + String catalog() default ""; + String schema() default ""; + String pkColumnName() default ""; + String valueColumnName() default ""; + String pkColumnValue() default ""; + int initialValue() default 0; + int allocationSize() default 50; + UniqueConstraint[] uniqueConstraints() default {}; + } + + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="unique-constraint" type="orm:unique-constraint" + minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required"/> + <xsd:attribute name="table" type="xsd:string"/> + <xsd:attribute name="catalog" type="xsd:string"/> + <xsd:attribute name="schema" type="xsd:string"/> + <xsd:attribute name="pk-column-name" type="xsd:string"/> + <xsd:attribute name="value-column-name" type="xsd:string"/> + <xsd:attribute name="pk-column-value" type="xsd:string"/> + <xsd:attribute name="initial-value" type="xsd:int"/> + <xsd:attribute name="allocation-size" type="xsd:int"/> + </xsd:complexType> + +</xsd:schema> + + Added: simexplorer-si-template/simexplorer-si-template-ejb3/src/java/META-INF/orm.xml =================================================================== --- simexplorer-si-template/simexplorer-si-template-ejb3/src/java/META-INF/orm.xml (rev 0) +++ simexplorer-si-template/simexplorer-si-template-ejb3/src/java/META-INF/orm.xml 2007-10-30 19:01:31 UTC (rev 17) @@ -0,0 +1,48 @@ +<?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"> + + <persistence-unit-metadata> + <xml-mapping-metadata-complete /> + </persistence-unit-metadata> + + <package>org.codelutin.test.entities</package> + + <mapped-superclass class="BaseEntity"> + <attributes> + <id name="id"> + <generated-value strategy="IDENTITY" /> + </id> + <transient name="new" /> + </attributes> + </mapped-superclass> + + <entity class="Task"> + <table name="TASKS" /> + <attributes> + <id name="id"> + <generated-value strategy="IDENTITY" /> + </id> + <basic name="time"> + <temporal>TIME</temporal> + </basic> + <many-to-one name="parent" target-entity="Task" + fetch="LAZY" /> + <one-to-many name="enfants" target-entity="Task"> + <cascade> + <cascade-all/> + </cascade> + </one-to-many> + </attributes> + </entity> + + <entity class="Project"> + <table name="PROJECTS"/> + <attributes> + <basic name="cost"></basic> + </attributes> + </entity> + +</entity-mappings> Added: simexplorer-si-template/simexplorer-si-template-ejb3/src/java/META-INF/persistence.xml =================================================================== --- simexplorer-si-template/simexplorer-si-template-ejb3/src/java/META-INF/persistence.xml (rev 0) +++ simexplorer-si-template/simexplorer-si-template-ejb3/src/java/META-INF/persistence.xml 2007-10-30 19:01:31 UTC (rev 17) @@ -0,0 +1,30 @@ +<persistence 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" version="1.0"> + + <persistence-unit name="persistence-unit"> + + <!-- le fournisseur JPA est Hibernate --> + <provider>org.hibernate.ejb.HibernatePersistence</provider> + + <!-- la DataSource JTA gérée par l'environnement Java EE5 --> + <jta-data-source>java:/datasource</jta-data-source> + + <mapping-file>META-INF/orm.xml</mapping-file> + + <properties> + <!-- logs SQL Hibernate + <property name="hibernate.show_sql" value="true"/> + <property name="hibernate.format_sql" value="true"/> + <property name="use_sql_comments" value="true"/> + --> + + <!-- le type de SGBD géré --> + <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" /> + + <!-- recréation de toutes les tables (drop+create) au déploiement de l'unité de persistence --> + <property name="hibernate.hbm2ddl.auto" value="create" /> + </properties> + </persistence-unit> + +</persistence> \ No newline at end of file Added: simexplorer-si-template/simexplorer-si-template-ejb3/src/java/org/codelutin/test/dao/DaoException.java =================================================================== --- simexplorer-si-template/simexplorer-si-template-ejb3/src/java/org/codelutin/test/dao/DaoException.java (rev 0) +++ simexplorer-si-template/simexplorer-si-template-ejb3/src/java/org/codelutin/test/dao/DaoException.java 2007-10-30 19:01:31 UTC (rev 17) @@ -0,0 +1,39 @@ +package org.codelutin.test.dao; + + at SuppressWarnings("serial") +public class DaoException extends RuntimeException { + + // code d'erreur + private int code; + + public DaoException(int code) { + super(); + this.code = code; + } + + public DaoException(String message, int code) { + super(message); + this.code = code; + } + + public DaoException(Throwable cause, int code) { + super(cause); + this.code = code; + } + + public DaoException(String message, Throwable cause, int code) { + super(message, cause); + this.code = code; + } + + // getter et setter + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + +} Added: simexplorer-si-template/simexplorer-si-template-ejb3/src/java/org/codelutin/test/dao/DaoProject.java =================================================================== --- simexplorer-si-template/simexplorer-si-template-ejb3/src/java/org/codelutin/test/dao/DaoProject.java (rev 0) +++ simexplorer-si-template/simexplorer-si-template-ejb3/src/java/org/codelutin/test/dao/DaoProject.java 2007-10-30 19:01:31 UTC (rev 17) @@ -0,0 +1,46 @@ +package org.codelutin.test.dao; + +import java.util.List; + +import javax.ejb.Stateless; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; + +import org.codelutin.test.entities.Task; + + at Stateless +public class DaoProject implements IDaoProject { + + @PersistenceContext(unitName="persistence-unit") + private EntityManager em; + + public void deleteOne(Integer id) { + Task task = em.find(Task.class, id); + if (task == null) { + throw new DaoException(String.format("Task n°[%d] inconnue", id), 2); + } + em.remove(task); + } + + public List<Task> getAll() { + return em.createQuery("select t from Task t").getResultList(); + } + + public Task getTask(Integer id) { + return em.find(Task.class, id); + } + + public Task saveOne(Task task) { + em.persist(task); + return task; + } + + public Task updateOne(Task task) { + Task p = em.find(Task.class, task.getId()); + if (p == null) { + throw new DaoException(String.format("task n°[%d] inconnue", task.getId()), 2); + } + return em.merge(task); + } + +} Added: simexplorer-si-template/simexplorer-si-template-ejb3/src/java/org/codelutin/test/dao/IDaoProject.java =================================================================== --- simexplorer-si-template/simexplorer-si-template-ejb3/src/java/org/codelutin/test/dao/IDaoProject.java (rev 0) +++ simexplorer-si-template/simexplorer-si-template-ejb3/src/java/org/codelutin/test/dao/IDaoProject.java 2007-10-30 19:01:31 UTC (rev 17) @@ -0,0 +1,19 @@ +package org.codelutin.test.dao; + +import java.util.List; + +import org.codelutin.test.entities.Task; + +public interface IDaoProject { + + public Task getTask(Integer id); + + public List<Task> getAll(); + + public Task saveOne(Task task); + + public Task updateOne(Task task); + + public void deleteOne(Integer id); + +} Added: simexplorer-si-template/simexplorer-si-template-ejb3/src/java/org/codelutin/test/entities/BaseEntity.java =================================================================== --- simexplorer-si-template/simexplorer-si-template-ejb3/src/java/org/codelutin/test/entities/BaseEntity.java (rev 0) +++ simexplorer-si-template/simexplorer-si-template-ejb3/src/java/org/codelutin/test/entities/BaseEntity.java 2007-10-30 19:01:31 UTC (rev 17) @@ -0,0 +1,19 @@ +package org.codelutin.test.entities; + +public class BaseEntity { + + private Integer id; + + public void setId(Integer id) { + this.id = id; + } + + public Integer getId() { + return id; + } + + public boolean isNew() { + return (this.id == null); + } + +} Added: simexplorer-si-template/simexplorer-si-template-ejb3/src/java/org/codelutin/test/entities/Project.java =================================================================== --- simexplorer-si-template/simexplorer-si-template-ejb3/src/java/org/codelutin/test/entities/Project.java (rev 0) +++ simexplorer-si-template/simexplorer-si-template-ejb3/src/java/org/codelutin/test/entities/Project.java 2007-10-30 19:01:31 UTC (rev 17) @@ -0,0 +1,15 @@ +package org.codelutin.test.entities; + +public class Project extends Task { + + private long cost; + + public long getCost() { + return cost; + } + + public void setCost(long cost) { + this.cost = cost; + } + +} Added: simexplorer-si-template/simexplorer-si-template-ejb3/src/java/org/codelutin/test/entities/Task.java =================================================================== --- simexplorer-si-template/simexplorer-si-template-ejb3/src/java/org/codelutin/test/entities/Task.java (rev 0) +++ simexplorer-si-template/simexplorer-si-template-ejb3/src/java/org/codelutin/test/entities/Task.java 2007-10-30 19:01:31 UTC (rev 17) @@ -0,0 +1,42 @@ +package org.codelutin.test.entities; + +import java.util.Date; +import java.util.HashSet; +import java.util.Set; + +public class Task extends BaseEntity +{ + + private Date time; + private Task parent; + private Set<Task> enfants; + + public Task getParent() { + return parent; + } + public void setParent(Task parent) { + this.parent = parent; + } + public Date getTime() { + return time; + } + public void setTime(Date time) { + this.time = time; + } + + @Override + public String toString() { + if (time != null) + return time.toLocaleString(); + else + return super.toString(); + } + + public Set<Task> getEnfants() { + return enfants; + } + public void setEnfants(Set<Task> enfants) { + this.enfants = enfants; + } + +} Added: simexplorer-si-template/simexplorer-si-template-ejb3/src/java/org/codelutin/test/service/IServiceProject.java =================================================================== --- simexplorer-si-template/simexplorer-si-template-ejb3/src/java/org/codelutin/test/service/IServiceProject.java (rev 0) +++ simexplorer-si-template/simexplorer-si-template-ejb3/src/java/org/codelutin/test/service/IServiceProject.java 2007-10-30 19:01:31 UTC (rev 17) @@ -0,0 +1,20 @@ +package org.codelutin.test.service; + +import java.util.Date; +import java.util.List; + +import org.codelutin.test.entities.Task; + +public interface IServiceProject { + + public List<Task> getAll(); + + public Task saveOne(Task task); + + public Task updateOne(Task task); + + public void deleteOne(Integer id); + + public Date getTotalTime(Integer id); + +} Added: simexplorer-si-template/simexplorer-si-template-ejb3/src/java/org/codelutin/test/service/ServiceProject.java =================================================================== --- simexplorer-si-template/simexplorer-si-template-ejb3/src/java/org/codelutin/test/service/ServiceProject.java (rev 0) +++ simexplorer-si-template/simexplorer-si-template-ejb3/src/java/org/codelutin/test/service/ServiceProject.java 2007-10-30 19:01:31 UTC (rev 17) @@ -0,0 +1,55 @@ +package org.codelutin.test.service; + +import java.util.Date; +import java.util.Iterator; +import java.util.List; +import java.util.Set; + +import javax.ejb.EJB; +import javax.ejb.Stateless; +import javax.ejb.TransactionAttribute; +import javax.ejb.TransactionAttributeType; + +import org.codelutin.test.dao.IDaoProject; +import org.codelutin.test.entities.Task; + + at Stateless + at TransactionAttribute(TransactionAttributeType.REQUIRED) +public class ServiceProject implements IServiceProject { + + @EJB + private IDaoProject dao; + + public void deleteOne(Integer id) { + dao.deleteOne(id); + } + + public List<Task> getAll() { + return dao.getAll(); + } + + public Task saveOne(Task task) { + return dao.saveOne(task); + } + + public Task updateOne(Task task) { + return dao.updateOne(task); + } + + public Date getTotalTime(Integer id) { + Date total = new Date(0); + + Task t = dao.getTask(id); + total.setTime(total.getTime() + t.getTime().getTime()); + Set<Task> enfants = t.getEnfants(); + if (enfants != null && enfants.size() > 0) { + for (Iterator<Task> iterator = enfants.iterator(); iterator.hasNext();) { + Task enfant = iterator.next(); + total.setTime(total.getTime() + getTotalTime(enfant.getId()).getTime()); + } + } + + return total; + } + +} Added: simexplorer-si-template/simexplorer-si-template-ejb3/src/java/postgres-ds.xml =================================================================== --- simexplorer-si-template/simexplorer-si-template-ejb3/src/java/postgres-ds.xml (rev 0) +++ simexplorer-si-template/simexplorer-si-template-ejb3/src/java/postgres-ds.xml 2007-10-30 19:01:31 UTC (rev 17) @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- ===================================================================== --> +<!-- --> +<!-- JBoss Server Configuration --> +<!-- --> +<!-- ===================================================================== --> + +<!-- $Id: postgres-ds.xml 63175 2007-05-21 16:26:06Z rrajesh $ --> +<!-- ==================================================================== --> +<!-- Datasource config for Postgres --> +<!-- ==================================================================== --> + + +<datasources> + <local-tx-datasource> + <jndi-name>datasource</jndi-name> + <connection-url>jdbc:postgresql:templateg</connection-url> + <driver-class>org.postgresql.Driver</driver-class> + <user-name>templateg</user-name> + <password>templateg</password> + <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml --> + <metadata> + <type-mapping>PostgreSQL 8.0</type-mapping> + </metadata> + </local-tx-datasource> + +</datasources>
participants (1)
-
glandais@users.labs.libre-entreprise.org