IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JPA Java Discussion :

[JPA] [Embeddable] DescriptorCustomizer pour héritage


Sujet :

JPA Java

  1. #1
    Membre expérimenté

    Homme Profil pro
    Senior Développeur JEE
    Inscrit en
    Avril 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Senior Développeur JEE
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2002
    Messages : 795
    Points : 1 660
    Points
    1 660
    Par défaut [JPA] [Embeddable] DescriptorCustomizer pour héritage
    Bonjour,

    J'ai une entité dans laquelle j'ai une classe Embedded.
    Cette embedded classe est elle-même une classe abstraite.

    Dans la spec il est mentionné que l'héritage n'est pas supporté pour des classes embeddedable mais qu'il est malgré tout possible de l'implémenter via un customizer.

    C'est ce que j'ai mis en place mais lors du lancement de mes tests unitaires, je me prend cette exception

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    javax.persistence.PersistenceException: Exception [EclipseLink-28019] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.EntityManagerSetupException
    Exception Description: Deployment of PersistenceUnit [be.buyway.phenix.DossierDAOUnitTest] failed. Close all factories for this PersistenceUnit.
    Internal Exception: Exception [EclipseLink-0] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.IntegrityException
    Descriptor Exceptions: 
    ---------------------------------------------------------
     
    Exception [EclipseLink-108] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.DescriptorException
    Exception Description: Cannot find value in class indicator mapping in parent descriptor [null].
    Descriptor: RelationalDescriptor(be.buyway.business.dto.credential.visibilityscope.AbstractVisibilityScopeSpecification --> [DatabaseTable(VISIBILITY_SCOPE)])
     
    Runtime Exceptions: 
    ---------------------------------------------------------
     
    	at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.createDeployFailedPersistenceException(EntityManagerSetupImpl.java:820)
    	at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:760)
    	at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getAbstractSession(EntityManagerFactoryDelegate.java:204)
    	at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:304)
    	at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:336)
    	at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:302)
    	at be.buyway.business.granting.dao.DossierDAOUnitTest.setup(DossierDAOUnitTest.java:48)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:606)
    	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
    	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
    	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
    	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
    	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
    	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
    	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
    	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
    	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
    	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
    	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
    	at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
    	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
    	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
    	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
    	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
    	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
    Caused by: Exception [EclipseLink-28019] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.EntityManagerSetupException
    Exception Description: Deployment of PersistenceUnit [be.buyway.phenix.DossierDAOUnitTest] failed. Close all factories for this PersistenceUnit.
    Internal Exception: Exception [EclipseLink-0] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.IntegrityException
    Descriptor Exceptions: 
    ---------------------------------------------------------
     
    Exception [EclipseLink-108] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.DescriptorException
    Exception Description: Cannot find value in class indicator mapping in parent descriptor [null].
    Descriptor: RelationalDescriptor(be.buyway.business.dto.credential.visibilityscope.AbstractVisibilityScopeSpecification --> [DatabaseTable(VISIBILITY_SCOPE)])
     
    Runtime Exceptions: 
    ---------------------------------------------------------
     
    	at org.eclipse.persistence.exceptions.EntityManagerSetupException.deployFailed(EntityManagerSetupException.java:238)
    	... 30 more
    Caused by: Exception [EclipseLink-0] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.IntegrityException
    Descriptor Exceptions: 
    ---------------------------------------------------------
     
    Exception [EclipseLink-108] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.DescriptorException
    Exception Description: Cannot find value in class indicator mapping in parent descriptor [null].
    Descriptor: RelationalDescriptor(be.buyway.business.dto.credential.visibilityscope.AbstractVisibilityScopeSpecification --> [DatabaseTable(VISIBILITY_SCOPE)])
     
    Runtime Exceptions: 
    ---------------------------------------------------------
     
    	at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.initializeDescriptors(DatabaseSessionImpl.java:696)
    	at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.initializeDescriptors(DatabaseSessionImpl.java:632)
    	at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.initializeDescriptors(DatabaseSessionImpl.java:568)
    	at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.postConnectDatasource(DatabaseSessionImpl.java:799)
    	at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.login(DatabaseSessionImpl.java:756)
    	at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:241)
    	at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:685)
    	... 28 more
    Voici ce que j'ai mis en place

    L'entité

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    @Entity
    @Access(AccessType.FIELD)
    @Table(name = "VISIBILITY_SCOPE")
    public class PhysicalRetailerVisibilityScope {
     
        @Id
        @Column(name = "SCOPE_NAME")
        private String name;
     
        @Column(name = "SPECIFICATION_TYPE", nullable = false)
        @Embedded
        private AbstractVisibilityScopeSpecification specification;

    La classe embedded
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    @Embeddable
    @Customizer(VisibilityScopeSpecificationCustomizer.class)
    public abstract class AbstractVisibilityScopeSpecification {
     
        protected abstract Predicate toPredicate(Join<?, ?> join, CriteriaQuery<?> cq, CriteriaBuilder cb);
     
    }

    Le customizer pour la classe parent
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class VisibilityScopeSpecificationCustomizer implements DescriptorCustomizer {
     
        @Override
        public void customize(final ClassDescriptor descriptor) throws Exception {
            descriptor.getInheritancePolicy().setSingleTableStrategy();
            descriptor.getInheritancePolicy().setClassIndicatorFieldName("SPECIFICATION_TYPE");
            descriptor.getInheritancePolicy().addClassIndicator(CarrefourGroupVisibilityScopeSpecification.class, "CARREFOUR_GROUP_SPEC");
        }
     
    }

    la classe enfant

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    @Embeddable
    @Customizer(CarrefourGroupVisibilityScopeSpecificationCustomizer.class)
    public class CarrefourGroupVisibilityScopeSpecification extends AbstractVisibilityScopeSpecification {
     
        private static final String[] UNNEEDED_CARREFOUR_VENDORS = new String[] { "2688372", "2491314", "2685071", "2689636", "2700656", "2689123",
            "2066181" };
     
        @Override
        protected Predicate toPredicate(final Join<?, ?> join, final CriteriaQuery<?> cq, final CriteriaBuilder cb) {
            Predicate carrefourShopPredicate = cb.equal(join.get("union").get("number"), UnionConstants.CARREFOUR_SHOPS);
            Predicate auto5Predicate = cb.equal(join.get("chain").get("number"), ChainConstants.Id.AUTO5);
            Predicate notRADPredicate = cb.notEqual(join.get("positionCodes").get("currentPosition"), "RAD");
            Predicate unneededShopsPredicate = cb.not(join.get("number").in(Arrays.asList(UNNEEDED_CARREFOUR_VENDORS)));
            Predicate toPredicate = cb.and(cb.or(carrefourShopPredicate, auto5Predicate), notRADPredicate, unneededShopsPredicate);
            return toPredicate;
        }
     
    }

    et enfin le customizer pour la classe enfant
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public class CarrefourGroupVisibilityScopeSpecificationCustomizer implements DescriptorCustomizer {
     
        @Override
        public void customize(final ClassDescriptor descriptor) throws Exception {
            descriptor.getInheritancePolicy().setParentClass(AbstractVisibilityScopeSpecification.class);
        }
     
    }

    Si quelqu'un a une quelconque idée, elle est la bienvenue.

    Merci pour votre aide
    Langages : Java, SQL
    Outils : Eclipse, Intellij
    SGBD : Oracle, PostgreSQL
    Mes Articles

  2. #2
    Membre expérimenté

    Homme Profil pro
    Senior Développeur JEE
    Inscrit en
    Avril 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Senior Développeur JEE
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2002
    Messages : 795
    Points : 1 660
    Points
    1 660
    Par défaut
    Bonjour,

    j'ai légèrement avancé.

    Maintenant vient le problème de la persistance de la nouvelle entité.

    Code de test

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    private PhysicalRetailerVisibilityScope createCarrefourGroupPhysicalRetailerVisibilityScope() {
            PhysicalRetailerVisibilityScope scope = new PhysicalRetailerVisibilityScope("CARREFOUR_GROUP",
                new CarrefourGroupVisibilityScopeSpecification());
            scope = this.visibilityScopeDAO.merge(scope);
            return scope;
        }

    Voici l'erreur qui m'est remontée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    Local Exception Stack: 
    Exception [EclipseLink-126] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.DescriptorException
    Exception Description: No subclass matches this class [class be.buyway.business.dto.credential.visibilityscope.CarrefourGroupVisibilityScopeSpecification] for this Aggregate mapping with inheritance.
    Mapping: org.eclipse.persistence.mappings.AggregateObjectMapping[specification]
    Descriptor: RelationalDescriptor(be.buyway.business.dto.credential.visibilityscope.PhysicalRetailerVisibilityScope --> [DatabaseTable(VISIBILITY_SCOPE)])
    	at org.eclipse.persistence.exceptions.DescriptorException.noSubClassMatch(DescriptorException.java:1122)
    	at org.eclipse.persistence.mappings.AggregateObjectMapping.getReferenceDescriptor(AggregateObjectMapping.java:1219)
    	at org.eclipse.persistence.mappings.AggregateMapping.getReferenceDescriptor(AggregateMapping.java:503)
    	at org.eclipse.persistence.mappings.AggregateMapping.getObjectBuilder(AggregateMapping.java:439)
    	at org.eclipse.persistence.mappings.AggregateMapping.buildBackupClonePart(AggregateMapping.java:134)
    	at org.eclipse.persistence.mappings.AggregateMapping.buildBackupClone(AggregateMapping.java:123)
    	at org.eclipse.persistence.internal.descriptors.ObjectBuilder.buildBackupClone(ObjectBuilder.java:606)
    	at org.eclipse.persistence.descriptors.changetracking.DeferredChangeDetectionPolicy.buildBackupClone(DeferredChangeDetectionPolicy.java:227)
    	at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.cloneAndRegisterNewObject(RepeatableWriteUnitOfWork.java:612)
    	at org.eclipse.persistence.internal.sessions.MergeManager.registerObjectForMergeCloneIntoWorkingCopy(MergeManager.java:1097)
    	at org.eclipse.persistence.internal.sessions.MergeManager.mergeChangesOfCloneIntoWorkingCopy(MergeManager.java:557)
    	at org.eclipse.persistence.internal.sessions.MergeManager.mergeChanges(MergeManager.java:313)
    	at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.mergeCloneWithReferences(UnitOfWorkImpl.java:3521)
    	at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.mergeCloneWithReferences(RepeatableWriteUnitOfWork.java:384)
    	at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.mergeCloneWithReferences(UnitOfWorkImpl.java:3481)
    	at org.eclipse.persistence.internal.jpa.EntityManagerImpl.mergeInternal(EntityManagerImpl.java:542)
    	at org.eclipse.persistence.internal.jpa.EntityManagerImpl.merge(EntityManagerImpl.java:519)
    	at be.buyway.persistence.AbstractDAOImpl.merge(AbstractDAOImpl.java:277)
    	at be.buyway.business.granting.dao.PhysicalRetailerCredentialDAOUnitTest.createCarrefourGroupPhysicalRetailerVisibilityScope(PhysicalRetailerCredentialDAOUnitTest.java:188)
    	at be.buyway.business.granting.dao.PhysicalRetailerCredentialDAOUnitTest.createNewCarrefourAnsFinancialAdvisorPhysicalRetailerCredentialDto(PhysicalRetailerCredentialDAOUnitTest.java:181)
    	at be.buyway.business.granting.dao.PhysicalRetailerCredentialDAOUnitTest.setup(PhysicalRetailerCredentialDAOUnitTest.java:66)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:606)
    	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
    	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
    	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
    	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
    	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
    	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
    	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
    	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
    	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
    	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
    	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
    	at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
    	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
    	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
    	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
    	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
    	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
    Et voici la hiérarchie de mes entités

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    @Entity
    @Access(AccessType.FIELD)
    @Table(name = "VISIBILITY_SCOPE")
    public class PhysicalRetailerVisibilityScope implements BaseEntity<String> {
     
        @Id
        @Column(name = "SCOPE_NAME")
        private String name;
     
        @Embedded
        private AbstractVisibilityScopeSpecification specification;

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    @Embeddable
    @Inheritance(strategy = InheritanceType.SINGLE_TABLE)
    @Customizer(VisibilityScopeSpecificationCustomizer.class)
    public abstract class AbstractVisibilityScopeSpecification {
     
        protected abstract Predicate toPredicate(Join<?, ?> join, CriteriaQuery<?> cq, CriteriaBuilder cb);
     
    }

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    @Embeddable
    @Customizer(CarrefourGroupVisibilityScopeSpecificationCustomizer.class)
    public class CarrefourGroupVisibilityScopeSpecification extends AbstractVisibilityScopeSpecification {
     
        private static final String[] UNNEEDED_CARREFOUR_VENDORS = new String[] { "2688372", "2491314", "2685071", "2689636", "2700656", "2689123",
            "2066181" };
     
        @Override
        protected Predicate toPredicate(final Join<?, ?> join, final CriteriaQuery<?> cq, final CriteriaBuilder cb) {
            Predicate carrefourUnionPredicate = cb.equal(join.get("union").get("number"), UnionConstants.CARREFOUR_SHOPS);
            Predicate carrefourChainPredicate = cb.equal(join.get("chain").get("number"), ChainConstants.Id.CARREFOUR);
            Predicate carrefourGroupPredicate = cb.equal(join.get("group").get("number"), GroupConstants.CARREFOUR_CARDS_GROUP);
            Predicate auto5Predicate = cb.equal(join.get("chain").get("number"), ChainConstants.Id.AUTO5);
            Predicate notRADPredicate = cb.notEqual(join.get("positionCodes").get("currentPosition"), "RAD");
            Predicate unneededShopsPredicate = cb.not(join.get("number").in(Arrays.asList(UNNEEDED_CARREFOUR_VENDORS)));
            Predicate toPredicate = cb.and(cb.or(cb.and(carrefourUnionPredicate, carrefourChainPredicate, carrefourGroupPredicate), auto5Predicate),
                notRADPredicate, unneededShopsPredicate);
            return toPredicate;
        }
     
    }

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public class CarrefourGroupVisibilityScopeSpecificationCustomizer implements DescriptorCustomizer {
     
        @Override
        public void customize(final ClassDescriptor descriptor) throws Exception {
            descriptor.getInheritancePolicy().setParentClass(AbstractVisibilityScopeSpecification.class);
        }
     
    }

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    public class VisibilityScopeSpecificationCustomizer implements DescriptorCustomizer {
     
        @Override
        public void customize(final ClassDescriptor descriptor) throws Exception {
            descriptor.getInheritancePolicy().setSingleTableStrategy();
            DatabaseField indicatorField = new DatabaseField();
            indicatorField.setName("specification");
            indicatorField.setLength(255);
            indicatorField.setType(java.lang.String.class);
            descriptor.getInheritancePolicy().setClassIndicatorField(indicatorField);
            descriptor.getInheritancePolicy().useClassNameAsIndicator();
            descriptor.getInheritancePolicy().setClassIndicatorFieldName("SPECIFICATION_TYPE");
            descriptor.getInheritancePolicy().addClassIndicator(CarrefourGroupVisibilityScopeSpecification.class, "CARREFOUR_GROUP_SPEC");        
        }
     
    }

    Merci pour votre aide.
    Langages : Java, SQL
    Outils : Eclipse, Intellij
    SGBD : Oracle, PostgreSQL
    Mes Articles

Discussions similaires

  1. [2008R2] Contrainte pour héritage exclusif
    Par Kropernic dans le forum Administration
    Réponses: 6
    Dernier message: 31/05/2013, 13h17
  2. [Mapping] Mapping hbm pour héritage
    Par rgomes dans le forum Hibernate
    Réponses: 2
    Dernier message: 17/04/2012, 10h17
  3. Réponses: 0
    Dernier message: 24/05/2011, 01h03
  4. Réponses: 0
    Dernier message: 15/11/2008, 15h47
  5. [Data] [SPRING 2.5][JPA] Configuration JTA pour JPA
    Par Righetto Dominique dans le forum Spring
    Réponses: 0
    Dernier message: 01/08/2008, 14h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo