例如,我有:
@Column(name = "username")
private String m_username;
请注意,@Column注释仅影响数据库列名。
Hibernate仍然认为属性的名称是"m_username"。
如何告诉Hibernate属性名称只是"username"?
请告诉我有一种方法。。。
编辑:我删除了代码示例中的@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()"one_answers"setUsername(Stringvalue)"(自动生成)。
为什么要使用AccessType.PROPERTY
?
删除它,它就会被"字段"访问。
不要混合字段和属性注释。坚持其中一个。
据我所知,我们不能。
hibernate
查找方法的方式仍然存在一个问题对于CCD_ 3。
假设您有一个名为"mProperty"的property
(第一个小写,第二个大写,其余都无关紧要)。不是accessor
源代码中的方法将是getMProperty
和setMProperty
。
BasicPropertyAccessor.getterMethod
就是这样实现的。
我在这里找到了一条线索:https://forum.hibernate.org/viewtopic.php?f=1&t=943110
但是这个线程已经有7年的历史了,我不知道如何将其应用于基于注释的配置(我没有xml配置文件)。