我刚刚开始使用Spring/Hibernate,并试图了解hibernate如何将实体映射到表。现在,我有以下类的工作与休眠来测试CRUD操作:带注释的Hibernate表映射
@Entity
@Table(name = "Users")
public class UserEntity implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
private String firstName;
private String lastName;
private int age;
//Getters, setters, etc.
}
@Repository
public class UserDAOImpl implements UserDAO {
@Autowired
HibernateTemplate hibernateTemplate;
@Override
public UserEntity getUser(String firstName, String lastName) {
List<UserEntity> users = hibernateTemplate.find("from UserEntity u where u.firstName = ? and u.lastName = ?", firstName, lastName);
return (users.size() == 0 ? null : users.get(0));
}
@Override
public void saveOrUpdate(UserEntity user) {
hibernateTemplate.saveOrUpdate(user);
}
}
上面的代码工作正常,但我很困惑UserEntity如何被映射到表。更具体地讲,调用hibernateTemplate.find("from UserEntity u where u.firstName = ? and u.lastName = ?", firstName, lastName)
当我在日志中得到以下信息:
Hibernate: select userentity0_.id as id0_, userentity0_.age as age0_, userentity0_.firstName as firstName0_, userentity0_.lastName as lastName0_ from Users userentity0_ where userentity0_.firstName=? and userentity0_.lastName=?
当调用hibernateTemplate.find()
我需要指定表UserEntity而日志报告它的查询表用户(正如我用@Table注解指定的那样)。
理想情况下,我想在整个我的程序一致,指的是UserEntity表作为用户而不是UserEntity。有什么办法可以做到这一点?如果可以,我可以使用HQL来完成,还是需要编写原生SQL查询?
感谢您的输入。我认为我对HQL的不熟悉是造成混淆的根源,我希望使用@Table注释定义的表名,但这是一个很小的区别。 – BBBronto 2011-05-22 00:23:56