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)”(自动生成)。
答案 0 :(得分:0)
为什么使用AccessType.PROPERTY
?
将其删除,然后通过“字段”进行访问。
不要混合使用字段和属性注释。坚持一个或另一个。
答案 1 :(得分:0)
据我所知,我们不能*。
hibernate
查找方法的方式仍有一个问题
对于given property name
。
假设您有property
,其名称类似于“mProperty”(首先
小写,第二个大写,休息没关系)。不是accessor
源代码中的方法将为getMProperty
和setMProperty
。
以这种方式实施BasicPropertyAccessor.getterMethod
的方式。
答案 2 :(得分:0)
我在这里找到了一个主角:https://forum.hibernate.org/viewtopic.php?f=1&t=943110
但该线程已有7年历史,我不知道如何将其应用于基于注释的配置(我没有xml配置文件)。