我的所有字段都有一个前缀。我怎么能告诉它休眠?

时间:2013-02-16 22:48:56

标签: java hibernate hibernate-annotations

E.g。我有:

  @Column(name = "username")
  private String m_username;

请注意,@ Column注释仅影响数据库列名。

Hibernate仍然认为该属性的名称是'm_username'。

如何告诉Hibernate属性名称只是'用户名'?

请告诉我有办法做到这一点......

编辑:我在代码示例中删除了@AccessType注释,因为它与此问题无关。

更新:将所有内容切换到字段访问后,会发生以下异常:

org.hibernate.QueryException: could not resolve property: username of: mypackage.model.User

它发生在这里:

Criteria criteria = session.createCriteria(User.class);
criteria.add(Restrictions.eq("username", username));
User result = (User) criteria.uniqueResult();

原因很可能是hibernate只知道一个名为'm_username'的属性,而我想到它并针对名为'username'的属性进行编程。另请注意,我的getter / setter被称为:“getUsername()”和“setUsername(String value)”(自动生成)。

3 个答案:

答案 0 :(得分:0)

为什么使用AccessType.PROPERTY

将其删除,然后通过“字段”进行访问。

不要混合使用字段和属性注释。坚持一个或另一个。

答案 1 :(得分:0)

据我所知,我们不能*。

hibernate查找方法的方式仍有一个问题 对于given property name

假设您有property,其名称类似于“mProperty”(首先 小写,第二个大写,休息没关系)。不是accessor 源代码中的方法将为getMPropertysetMProperty

以这种方式实施BasicPropertyAccessor.getterMethod的方式。

答案 2 :(得分:0)

我在这里找到了一个主角:https://forum.hibernate.org/viewtopic.php?f=1&t=943110

但该线程已有7年历史,我不知道如何将其应用于基于注释的配置(我没有xml配置文件)。