2017-07-03 4 views
0

Ich habe eine Einheit, die von anothers erstreckt, wie folgt aus:Wie Ignorieren Felder in einer übergeordneten Klasse, wenn sie mit Javers audditing

public class House extends Building{ 
public Integer idHouse 
} 

public class Building extends Structure{ 
} 

public class Structure { 
public Integer field1; 
} 

Ich brauche Änderungen in Haus Objekte zu prüfen, aber ich will nicht schließen Structure.field1 Feld. Ich habe versucht, dieses:

String skippedFields = ["field1"]; 
     EntityDefinition houseEntity = 
       EntityDefinitionBuilder.entityDefinition(House.class) 
       .withIdPropertyName("idHouse") 
       .withIgnoredProperties(Arrays.asList(skippedFields)) 
       .build(); 

Javers javers = JaversBuilder.javers() 
.registerEntity(expedienteEntity) 
    .registerJaversRepository(sqlRepository).build(); 

Aber es Nähte der "IgnoeredPropertied" zu ignorieren. Ich habe auch versucht, die Strukturklasse zu mappen, aber ich kann nicht, weil es keine ID hat.

Irgendwelche Ideen wie kann ich field1 ignorieren? Thx!

Antwort

0

Können Sie einen fehlgeschlagenen Testfall für dieses Problem anzeigen?

Ich schrieb den Test (groovy) und alles sieht gut aus (Ihr Entity nur eine Eigenschaft hat - idHouse):

class StackCase extends Specification { 

    class Structure { 
     public Integer field1 
    } 

    class Building extends Structure{ 
    } 

    class House extends Building{ 
     Integer idHouse 
    } 

    def "should use IgnoredProperties "(){ 
     given: 
     def houseEntity = 
       EntityDefinitionBuilder.entityDefinition(House) 
         .withIdPropertyName("idHouse") 
         .withIgnoredProperties(["field1"]) 
         .build() 

     def javers = JaversBuilder.javers() 
       .registerEntity(houseEntity).build() 

     def entityType = javers.getTypeMapping(House) 
     println entityType.prettyPrint() 

     expect: 
     entityType.properties.size() == 1 
    } 
} 

Ausgang:

22:16:51.700 [main] INFO org.javers.core.JaversBuilder - JaVers instance started in 723 ms 
EntityType{ 
    baseType: class org.javers.core.StackCase$House 
    typeName: org.javers.core.StackCase$House 
    managedProperties: 
    Field Integer idHouse; //declared in House 
    idProperty: idHouse 
} 
Verwandte Themen