我剛剛開始使用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