首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

Hibernarte many-to-many 查询有关问题

2011-12-03 
Hibernarte many-to-many 查询问题假设现在有两张表Book和Category(书的类型),通过一张中间表category_boo

Hibernarte many-to-many 查询问题
假设现在有两张表Book和Category(书的类型),通过一张中间表category_book实现many-to-many.  
   
  实体对象Book中有个Set保存Category,实体对象Category中也有一个Set保存Book。  
   
  当我要查询属于某个Category的所有Book时,HQL应该怎样写?????  
   
  查询某个Category中有多少本书时,HQL应该怎样写????  

这是我的hbm.xml的片断  
  Book.hbm.xml:  
  <set name="categorys" table="category_book" lazy="true" inverse="true" cascade="save-update">  
  <key column="bookId"></key>  
  <many-to-many class="Category" column="categoryId"></many-to-many></set>  
   
  Category.hbm.xml:  
  <set name="books" table="category_book" cascade="save-update" lazy="true" >  
  <key column="categoryId"></key>  
  <many-to-many class="Book" column="bookId"/>  
  </set>

[解决办法]


Category c= get(Category.class,id);
Set s = c.getBooks();
[解决办法]
select b.categorySet from Book b where b.id=?

Java code
List<Category> categorys= session.        createQuery("select b.categorySet from  Book b where b.id=:id").setLong("id", bookId).list();List<Book> books= session.        createQuery("select c.bookSet from  Category c where c.id=:id").setLong("id", categoryId).list();
[解决办法]
确认category里面有吗,检查一下你的控制台打出的sql语句,看看正确与否

如果都正确,看下系统是否报异常,把异常贴上来看看
[解决办法]
查询属于某个Category的所有Book:
select book from Book book,Category category where category = all elements(book.categorys) and category.categoryId=?

查询某个Category中有多少本书
select count(*) from Book book,Category category where category = all elements(book.categorys) and category.categoryId=?

这其实用的是SQL的all函数。
关于elements在Hibernate reference 的 Hql 里有介绍。

热点排行