2017-04-12 1 views
0

エンティティの実装が生成されています。私が直面している主な問題は、booleanフィールドgetterメソッドが異なる命名規則を持っているということです:is<FieldName>()javax.persistence PROPERTYカスタムゲッター/セッターの名前にアクセスする

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

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

}

特定の実装は、エンティティ上の実際のフィールドが欠けている、私はそれが狂った音を知っているが、それはそれがどのようにあります。したがって、私はPROPERTYアクセスを使用する必要があります。私は、コードの生成方法を変更することはできませんので、私はorm.xmlマッピングファイルでこれをやっている:

<?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> 

をしかし、これは存在しませんgetIsPrivate()方法、探しhiberanteになります。

私はPROPERTYアクセスを使用する必要があるので、私のgetメソッドはJavaBeensの規約に従わないので、特定のメソッドやパターンを探すためにhiberanteを説得する方法はありますか?is<FieldName>()メソッドをマップできますか? JPA仕様のセクション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) 

あたりとして

+0

は共有コードを理解できません。 –

+1

Ummm ... '()'はすでに規約に従っていますが、プリミティブ 'boolean'ではなくjava.lang.Booleanです。 – crizzis

答えて

1

あなたの財産はブールですので、その後isPropertyは有効な名前であり、あなたのJPAプロバイダがそれを観察する必要があります。そうでない場合は、バグを報告する必要があります。

関連する問題