2017-04-12 3 views
0

Die Implementierung meiner Entitäten generiert und ich habe wenig Kontrolle über sie. Das Hauptproblem, mit dem ich konfrontiert bin, ist, dass die boolesche Felder-Getter-Methode eine andere Namenskonvention hat: is<FieldName>().javax.persistence PROPERTY Zugriff benutzerdefinierte Getter/Setter-Namen

public class Bookmark { 
    /** 
    * @generated 
    */ 
    public boolean isIsPrivate() { 
     ... 
    } 

    /** 
    * @generated 
    */ 
    public void setIsPrivate(boolean newIsPrivate) { 
     ... 
    } 

}

Die spezielle Implementierung fehlt tatsächliche Felder auf der Einheit, ich weiß, es klingt verrückt, aber es ist wie es ist. Daher muss ich den Zugriff auf PROPERTY verwenden. Da ich nicht ändern kann, wie der Code generiert wird, mache ich das in einer orm.xml Mapping-Datei:

<?xml version="1.0" encoding="UTF-8"?> 
<entity-mappings version="2.1" 
    xmlns="http://xmlns.jcp.org/xml/ns/persistence/orm" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence/orm http://xmlns.jcp.org/xml/ns/persistence/orm_2_1.xsd"> 

<persistence-unit-metadata> 
    <xml-mapping-metadata-complete/> 
</persistence-unit-metadata> 
<package>org.hibernate.ogm.backendtck.type.ogmemf.impl</package> 
... 
<entity class="Bookmark" access="PROPERTY"> 
    <attributes> 
     <basic name="isPrivate"/> 
    </attributes> 
</entity> 
</entity-mappings> 

Dies ist jedoch in hiberante führt eine getIsPrivate() Methode suchen, die es nicht gibt.

Da ich den PROPERTY-Zugriff verwenden muss, aber meine Methoden nicht den JavaBeens-Konventionen folgen, kann ich Hiberante irgendwie dazu überreden, nach einer bestimmten Methode oder einem Muster zu suchen, damit ich die is<FieldName>() Methoden zuordnen kann?

+0

kann nicht verstehen, teilen Sie den Code bitte. –

+1

Ummm ... 'ist ()' folgt bereits der Konvention, es sei denn, es ist ein 'java.lang.Boolean' im Gegensatz zu einem primitiven' boolean' – crizzis

Antwort

1

Wie pro JPA-Spezifikation Abschnitt 2,2

In this case, for every persistent property property of type T of the 
entity, there is a getter method, getProperty, and setter method 
setProperty. For boolean properties, isProperty may be used as an 
alternative name for the getter method. [2] 

For single-valued persistent properties, these method signatures are: 
• T getProperty() 
• void setProperty(T t) 

Da Ihr Eigentum boolean ist, dann ist isProperty ein gültiger Name und Ihre JPA-Provider sollte es beobachten. Wenn dies nicht der Fall ist, sollten Sie einen Fehler melden.

Verwandte Themen