
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
27.01.2005, 19:17
|
|||
|---|---|---|---|
|
|||
OJB(Выполнение запроса из двух таблиц которые связаны 1:N) |
|||
|
#18+
Есть связь между таблицами author и book (1:n) . Эту связь я задал в файле repository_user.xml <!-- AUTHOR--> <class-descriptor class="ua.ojb.Author" table="author"> <field-descriptor name="author_id" column="author_id" jdbc-type="INTEGER" primarykey="true" /> <field-descriptor name="author_name" column="author_name" jdbc-type="VARCHAR" /> <collection-descriptor name="books" element-class-ref="ua.ojb.Book" auto-retrieve="true" auto-update="true" auto-delete="true"> <inverse-foreignkey field-ref="authorid"/> </collection-descriptor> </class-descriptor> <!-- BOOK --> <class-descriptor class="ua.ojb.Book" table="book"> <field-descriptor name="book_id" column="book_id" jdbc-type="INTEGER" primarykey="true" /> <field-descriptor name="title" column="title" jdbc-type="VARCHAR" /> <field-descriptor name="authorid" column="authorid" jdbc-type="INTEGER" /> <field-descriptor name="price" column="price" jdbc-type="INTEGER" /> </class-descriptor> Эта связь задана правильно и работает База на MySql Фрагмент bean класов public class Author { private Integer author_id; private String author_name; private Collection books; .................................... public class Book { private Integer book_id; private String title; private Integer price; private Integer authorid; ................................... Нужно написать запрос select author.author_id where author.author_id = book.authorid and book.price = 100 так как таблици связаны 1:N то с помощью следующего кода Criteria crit = new Criteria(); QueryByCriteria query = new QueryByCriteria(Author.class,crit); res = broker.getCollectionByQuery(query); мы получим колекцию Author , каждый елемент которой содержит солекцию Book . Но так как в таблице Book даных очень много, то мне нужно поставить фильтр price = 100. Чтоб уже получить колекцию Author , каждый елемент которой содержит солекцию Book у которой price = 100. Я пытался это сделать разными способами но ничего не получилось. Вот один из способов : Collection res = null; Criteria subCrit = new Criteria(); Criteria crit = new Criteria(); subCrit.addEqualTo("price ",new Integer(100)); ReportQueryByCriteria subQuery = QueryFactory.newReportQuery(Book.class, subCrit); subQuery.setColumns(new String [] { "authorid" }); crit.addColumnEqualToField("author_id",subQuery); QueryByCriteria query = new QueryByCriteria(Author.class,crit); res = this.persistenceBroker.getCollectionByQuery(query); но к сожалению это не работает Ребята, выручте пожалуйста. Зарание благодарен! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=59&tablet=1&tid=2153028]: |
0ms |
get settings: |
10ms |
get forum list: |
21ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
144ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
28ms |
get tp. blocked users: |
2ms |
| others: | 244ms |
| total: | 468ms |

| 0 / 0 |
