@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();
其原因是最有可能只是冬眠“知道”的属性所谓的'm_username',而我想到它,并针对名为'用户名'的属性进行编程。还要注意我的getter/setter被调用:“getUsername()”和“setUsername(String value)”(自动生成)。
这是因为我想访问类型属性,但更喜欢指定字段上的注释。 getters/setter是自动生成的(参见我的另一个问题:http://stackoverflow.com/questions/14915606/how-can-i-place-the-hibernate-annotations-on-the-fields-but-always-have -propert)。 – Zalumon 2013-02-16 23:17:08
@Zalumon为什么你不能使用字段访问?它解决了一些问题,例如。与getter/setter副作用。它也可以解决你的问题。总而言之,坚持一个对象就是坚持它的*内部*状态。 – 2013-02-18 10:27:59
@Adam:其实我只是把所有东西都切换到了字段访问,看看我能否以这种方式工作,但我仍然有问题。我将用抛出的异常来更新这个问题。 – Zalumon 2013-02-18 10:35:19