修改JPA查询中的属性名称

时间:2009-06-01 11:27:38

标签: java hibernate jpa annotations

我正在使用带有下划线的字段名前缀的约定。当我使用这些字段生成注释实体类时,我坚持在查询中使用下划线前缀属性名称。我想避免这种情况,并且能够做到:

@Entity
public class Container {

    private String _value;
}

// in a lookup method
executeQuery("from Container where value = ?", value);

一般情况下是JPA还是特别是Hibernate?


更新:仍在尝试记住原因,但我需要在字段上注释而不是在getter上注释。

3 个答案:

答案 0 :(得分:4)

您可以注释getter:

@Entity
public class Container {

    private String _value;

    @Column
    public String getValue()
    {
        return _value;
    }

    public void setValue( String value )
    {
        this._value = value;
    }

}

答案 1 :(得分:1)

您也许可以编写生成的实体类的子类,它们上面有getter方法,然后将实体管理器配置为使用getter / setter访问而不是字段访问?那么你的getter / setter可以有你喜欢的任何名字。

答案 2 :(得分:0)

看看NamingStrategy。扩展DefaultNamingStrategy并覆盖columnName方法以去除第一个下划线(如果它在那里)将相当容易。