2013-07-16 2 views
0

у меня есть 3 бобы: Продукт, Цвет, Ценаспящего режима HQL, присоединиться к 3 таблицы

Прайс отношение продукта - @ManyToOne

Product- Цвет отношение - @ManyToMany

Каждый цвет имеет 3 продукта и каждый продукт имеет 3 цену

Нужно ли мне все цены на указанный цвет? Как это сделать с помощью HQL?

ответ

0

«Нужно ли все цены на указанный цвет?» Только вы можете ответить на этот вопрос, никто из нас не будет знать ваши требования к бизнесу.

Что касается HQL, все, что вам нужно сделать, это просто получить объект «Цвет» и перейти к его ценам.

// obtain session, start transaction.. 
List<Color> colors = session.createQuery("select c from Color c where name = :name").setString("name", "blue").list(); 

Set<Price> prices = new HashSet<Price>(); 
for(Color c : colors) { 
    for(Product p : c.getProducts()) { 
    prices.addAll(p.getPrices()); 
    } 
} 
// end transaction.. 

Примечание: в зависимости от количества и распределения данных программа выше может привести к чрезмерным запросам и низкой производительности. Подумайте о том, как использовать нетерпеливое отношение/присоединиться к выборке на HQL (например: «выберите c из цвета c левым соединением fetch c.products»)

+0

благодарю вас за ответ извините, я объясню свою проблему: в продукте таблица i имеет поле «тип», а таблица - это цена, которую я подал «price_min» – cary

+0

Я пытаюсь сделать этот запрос – cary

+0

Запрос запроса = hibernatesession.createQuery («выберите отдельный prlpx из Color c, Product pr» + \t \t \t \t \t \t "присоединиться pr.listPrice prlpx" + \t \t \t \t \t \t "join c.listProduct clpr где clpr.nom = '" + color + "'" + \t "И prlpx.price_min = '" + price_min + "' pr.type = 'x'"); \t listPrice = (Список ) query.list(); – cary

Смежные вопросы