pojo类的配置文件:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.barewalls.entity.db.MImagedownloadinfo" table="m_imagedownloadinfo" catalog="postersfirst">
<id name="id" type="java.lang.Integer">
<column name="id" not-null="true"/>
<generator class="native" />
<!--<generator class="increment" />-->
</id>
<property name="imageurl" type="java.lang.String">
<column name="imageurl" length="200" unique="true"/>
</property>
<property name="downloadstate" type="java.lang.String">
<column name="downloadstate" length="20" />
</property>
</class>
</hibernate-mapping>出问题的代码:
public List findByProperty(String propertyName, Object value) {
log.debug("finding MImagedownloadinfo instance with property: "
+ propertyName + ", value: " + value);
try {
String queryString = "from MImagedownloadinfo as model where model."
+ propertyName + "= ?";
Query queryObject = getSession().createQuery(queryString);
queryObject.setParameter(0, value);
return queryObject.list();
} catch (RuntimeException re) {
log.error("find by property name failed", re);
throw re;
}finally{
if(getSession().getCacheMode().isGetEnabled()){
getSession().flush();<-------------------------(出问题的地方)
getSession().clear();
}
}
}执行代码:
private void saveOrupdateImageDownLoadState(String imageurl,String state){
//dao
MImagedownloadinfoDAO dao=new MImagedownloadinfoDAO();
//session
Session session=dao.getSession();
//映射类
MImagedownloadinfo m=new MImagedownloadinfo();
m.setImageurl(imageurl);
m.setDownloadstate(state);
//查找
List<MImagedownloadinfo> list=dao.findByImageurl(imageurl);();<------------------(出问题的地方)
if(list.size()!=0){
for(int i=0;i<list.size();i++){
dao.attachDirty(list.get(i));
}
}else{
try{
//开始事务
session.beginTransaction();
dao.save(m);
session.getTransaction().commit();
}catch(Exception e){
e.printStackTrace();
session.getTransaction().rollback();
}
}
}异常:
Exception in thread "main" org.hibernate.AssertionFailure: null id in com.barewalls.entity.db.MImagedownloadinfo entry (don't flush the Session after an exception occurs)
at org.hibernate.event.def.DefaultFlushEntityEventListener.checkId(DefaultFlushEntityEventListener.java:78)
at org.hibernate.event.def.DefaultFlushEntityEventListener.getValues(DefaultFlushEntityEventListener.java:187)
at org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:143)
at org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:219)
at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:99)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:49)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1028)
at com.barewalls.dao.MImagedownloadinfoDAO.findByProperty(MImagedownloadinfoDAO.java:119)
at com.barewalls.dao.MImagedownloadinfoDAO.findByImageurl(MImagedownloadinfoDAO.java:126)
at com.barewalls.content.util.DownLoadImage.saveOrupdateImageDownLoadState(DownLoadImage.java:108)
at com.barewalls.content.util.DownLoadImage.download(DownLoadImage.java:76)
at com.barewalls.test.content.util.TestDownLoadImage.main(TestDownLoadImage.java:32)大家好,我通过hibernate插入数据库,单线程没问题,但是我开了两个线程之后就会出现这个问题,我按照网上的方法,添加了事物都不能解决问题
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.barewalls.entity.db.MImagedownloadinfo" table="m_imagedownloadinfo" catalog="postersfirst">
<id name="id" type="java.lang.Integer">
<column name="id" not-null="true"/>
<generator class="native" />
<!--<generator class="increment" />-->
</id>
<property name="imageurl" type="java.lang.String">
<column name="imageurl" length="200" unique="true"/>
</property>
<property name="downloadstate" type="java.lang.String">
<column name="downloadstate" length="20" />
</property>
</class>
</hibernate-mapping>出问题的代码:
public List findByProperty(String propertyName, Object value) {
log.debug("finding MImagedownloadinfo instance with property: "
+ propertyName + ", value: " + value);
try {
String queryString = "from MImagedownloadinfo as model where model."
+ propertyName + "= ?";
Query queryObject = getSession().createQuery(queryString);
queryObject.setParameter(0, value);
return queryObject.list();
} catch (RuntimeException re) {
log.error("find by property name failed", re);
throw re;
}finally{
if(getSession().getCacheMode().isGetEnabled()){
getSession().flush();<-------------------------(出问题的地方)
getSession().clear();
}
}
}执行代码:
private void saveOrupdateImageDownLoadState(String imageurl,String state){
//dao
MImagedownloadinfoDAO dao=new MImagedownloadinfoDAO();
//session
Session session=dao.getSession();
//映射类
MImagedownloadinfo m=new MImagedownloadinfo();
m.setImageurl(imageurl);
m.setDownloadstate(state);
//查找
List<MImagedownloadinfo> list=dao.findByImageurl(imageurl);();<------------------(出问题的地方)
if(list.size()!=0){
for(int i=0;i<list.size();i++){
dao.attachDirty(list.get(i));
}
}else{
try{
//开始事务
session.beginTransaction();
dao.save(m);
session.getTransaction().commit();
}catch(Exception e){
e.printStackTrace();
session.getTransaction().rollback();
}
}
}异常:
Exception in thread "main" org.hibernate.AssertionFailure: null id in com.barewalls.entity.db.MImagedownloadinfo entry (don't flush the Session after an exception occurs)
at org.hibernate.event.def.DefaultFlushEntityEventListener.checkId(DefaultFlushEntityEventListener.java:78)
at org.hibernate.event.def.DefaultFlushEntityEventListener.getValues(DefaultFlushEntityEventListener.java:187)
at org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:143)
at org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:219)
at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:99)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:49)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1028)
at com.barewalls.dao.MImagedownloadinfoDAO.findByProperty(MImagedownloadinfoDAO.java:119)
at com.barewalls.dao.MImagedownloadinfoDAO.findByImageurl(MImagedownloadinfoDAO.java:126)
at com.barewalls.content.util.DownLoadImage.saveOrupdateImageDownLoadState(DownLoadImage.java:108)
at com.barewalls.content.util.DownLoadImage.download(DownLoadImage.java:76)
at com.barewalls.test.content.util.TestDownLoadImage.main(TestDownLoadImage.java:32)大家好,我通过hibernate插入数据库,单线程没问题,但是我开了两个线程之后就会出现这个问题,我按照网上的方法,添加了事物都不能解决问题
解决方案 »
- jboss4下ear
- java代码正则表达式替换的问题
- struts2做上传功能有什么好的方法吗?
- 大虾!求助!!!!!tamcat 运行时出现问题啦!!
- Hibernate中的VO跟PO到底指的是什么啊??????????
- Birt百灵报表集成
- 救命啊,关于根据SCHEMA,用JAVA生成XML && JAXB寻找中(100分征集)
- 请各位帮我解决一下小问题,谢谢
- 为什么会出现这个情况?resin + mysql
- 如何在sun j2ee服务器中配置自己的主页?
- com.microsoft.sqlserver.jdbc.SQLServerException: 用户 'data' 登录失败。
- 100分,急 org.hibernate.AssertionFailure: null id in com.alpha.bean.AnswerInfo ent
//session
Session session=dao.getSession();
能不能贴一下MImagedownloadinfoDAO 类,你有没有用ThreadLocal绑定session