hibernate中如何对没有id的表进行管理

来源:互联网 发布:娱乐圈爆料知乎天涯 编辑:程序博客网 时间:2024/06/06 16:31
首先,Hibernate 中必须要有一个主键,如果没有主键,Hibernate会把你所有的字段,和起来做为一个主键,因为在Hibernate中没有两个一样的对象,那个在你的表中就必须要有一个来区分,---主键--- 
你可以把name 设置为主键,设置主键是可以输入的。 
<id name="c_name" type="java.lang.String" column="c_name">  
    <generator class="assign" />  
</id> 
// 
generator 表示ID生成策略  
native 表示按照数据库中来设置(sql200-2005  是identity  mysql auto increment ) 
assign 表示可以输入的 

uuid  表示随机生成18的一个数做为ID

如果你要管理没有主键的表就不能进行映射

我采用的方法是用sql语句直接对数据库中的表进行操作

/**
* 查询数据 返回的是一个List对象,对象中的每一个元素是一个HashMap对象

* @param sql
* @String 查询语句
* @return 
* @return List 结果集
* @throws Exception
*/


public List queryByList(String sql) {
try {
Session session = HibernateSessionFactory.getSession();
session = HibernateSessionFactory.getSession(); 
           SQLQuery sqlQuery = session.createSQLQuery(sql); 
           List list = sqlQuery.list(); 
return list;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}

action中简写:

String sql;

List list = queryByList(sql);

this.request.setAttribute("list", list);

在页面获取值时用

List list = (List)request.getAttribute("list");
        
 for (Iterator<Object[]> iterator = list.iterator(); iterator.hasNext();) { 

//表中每一行数据为一个数组
 Object[] object= iterator.next(); 

Sysout.out.print(object[0]);

}

声明:本人新手,个人觉得这个方法其实很麻烦,还要写一个增删改查的工具类,如果有好的方法可以一起讨论。

原创粉丝点击