Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > вопрос по HibernateTemplate и HQL


Автор: Lonkly 14.8.2010, 13:16
Доброго времени суток! Не хотел в этот солнечный день садиться программить, но все же решился. И через пол часа труда возник вопрос. Изучаю в данный момент HQL и столкнулся с такой проблемой:

Так создан список друзей пользователя:

    
Код

@ManyToMany(fetch = FetchType.EAGER)
    @JoinTable(name = "USER_FRIENDS", joinColumns = { @JoinColumn(name = "USER_ID") }, inverseJoinColumns = { @JoinColumn(name = "FRIEND_ID") })
    private Set<User> friends = new HashSet<User>();


Вопрос:
        Как используя метод List<User> userFriends = hibernateTemplate.find("    найти в этой таблице пользователя по его и его друга айдишникам.
        Ну,  что-то вроде этого: "from User_Friends where USER_ID='" + user.getId() + "' and FRIEND_ID = '" + friendId + "', только рабочий вариант smile

П.С: для изучения Spring+Hibernate читаю официальные референсы. А какую книгу посоветует уважаемое коммьюнити?


Полный метод выглядит так:

Код

    @Override
    public void removeFriend(User user, Long friendId) {
        List<User> userFriends = hibernateTemplate
                .find("from User.friends where USER_ID='" + user.getId()
                        + "' and FRIEND_ID = '" + friendId + "'");
        hibernateTemplate.delete(userFriends.get(0));
    }

Автор: wedens 14.8.2010, 15:39
Код

List<User> userFriends = hibernateTemplate.find(from User as user left join fetch user.friends as friend where user.id=? and friend.id=?, user.getId(), friendId);

сам не эксперт, но вроде что то похожее на это)

Автор: ki6opr 18.8.2010, 03:52
прости за офтоп но вот это просто ужасно:
@ManyToMany(fetch = FetchType.EAGER)

когда у тебя будет грузится твой объект, ты еще потащищ за собой и список друзей, а если их будет не 1 а хотя бы 50 - 100 то тормоза гарантированы.

PS поэтому у аннотаций с Many FetchType по умолчанию Lazy

Автор: wedens 18.8.2010, 14:39
Цитата(ki6opr @ 18.8.2010,  03:52)
прости за офтоп но вот это просто ужасно:
@ManyToMany(fetch = FetchType.EAGER)

когда у тебя будет грузится твой объект, ты еще потащищ за собой и список друзей, а если их будет не 1 а хотя бы 50 - 100 то тормоза гарантированы.

PS поэтому у аннотаций с Many FetchType по умолчанию Lazy

может он будет сразу использовать эти данные.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)