spring + hibernaye 读取mymql blob

悬赏:5 发布时间:2008-08-08 提问人:不是流氓 (初级程序员)

Hibernate配置文件GameInfo.hbm.xml
<property name="pictureMain" lazy="true">
            <column name="picture_main" not-null="true"/>
        </property>
        <property name="picture1" >
            <column name="picture1"/>
        </property>
        <property name="picture2">
            <column name="picture2"/>
        </property>


读取方法
	public Object getRecordById(final Class object, final long id) {
		List list = (List) getHibernateTemplate().execute(
				new HibernateCallback() {

					public Object doInHibernate(Session session)
							throws HibernateException, SQLException {
						Criteria criteria = session.createCriteria(object);
						criteria.add(Expression.eq("id", id));
						return criteria.list();
					}

				});
		if (list.size() == 0)
			return null;
		return list.get(0);
	}

显示
long id = Long.valueOf(request.getParameter("id"));
		GameInfo gameInfo = super.getAdminServiceInter().getGameById(id);
byte[] b = gameInfo.getPictureMain();//在这里有异常java.lang.NullPointerException
                                    //但是我在控制台下面就能把图片输出出来,很郁闷

		try {
    		response.setContentType("blob/gif");
    		OutputStream  output = response.getOutputStream();
		    output.write(b);
		    output.flush();
		    output.close();
		} catch (Exception e) {
			e.printStackTrace();
		}

采纳的答案

2008-08-08 小疯子 (资深程序员)

你的意思是把byte[] b输出来吗?你在gameInfo.getPictureMain();都抛java.lang.NullPointerException了, 你怎么能输出来呢?按你抛异常的位置, 应该是gameInfo为null, 在楼主的读取方法中, 既然是根据id来查, 不是只用session.get(object, id)就可以了么, 怎么还用list, 难道楼主的id不是用来作主键的???

提问者对于答案的评价:
谢谢,我还以为是mysql方言的问题,原来ID传错了,呵呵,搞了一个上午没发现ID不一样

还有那个直接get也行,但是我做list还有其他用途