Я только начинаю работать со 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 , тогда как журнал сообщает, что он запрашивает таблицу Users (как я указал в аннотации @Table).
В идеале я хотел бы быть последовательным во всей моей программе и ссылаться на таблицу UserEntity как Users вместо UserEntity . Есть ли способ, которым я могу это сделать? Если это так, могу ли я сделать это с помощью HQL или мне нужно вместо этого писать собственные запросы SQL?