读书人

SpringMVC求指教100分!sessionFactor

发布时间: 2013-11-29 00:21:24 作者: rapoo

SpringMVC求指教100分!!sessionFactory.getCurrentSession().delete无法删除

package net.roseindia.dao;

import java.util.Date;
import java.util.List;

import net.roseindia.model.Article;

import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

@Repository("articleDao")
public class ArticleDaoImpl implements ArticleDao {

@Autowired
private SessionFactory sessionFactory;

// To Save the article detail
public void saveArticle(Article article) {
article.setAddedDate(new Date());
sessionFactory.getCurrentSession().saveOrUpdate(article);
}
public void deleteArticle(Integer articleId){
System.out.println("Dao-->"+articleId);//能够打印出id号
Article article = (Article) sessionFactory.getCurrentSession().load(
Article.class,articleId);
sessionFactory.getCurrentSession().beginTransaction();
if (null != article) {
sessionFactory.getCurrentSession().delete(article);
}

}

// To get list of all articles
@SuppressWarnings("unchecked")
public List<Article> listArticles() {
return (List<Article>) sessionFactory.getCurrentSession().createCriteria(Article.class).list();
}
}

Dao-->3
Hibernate: select article0_.article_id as article1_0_0_, article0_.date_added as date2_0_0_, article0_.article_desc as article3_0_0_, article0_.article_name as article4_0_0_ from article article0_ where article0_.article_id=?

Hibernate: select this_.article_id as article1_0_0_, this_.date_added as date2_0_0_, this_.article_desc as article3_0_0_, this_.article_name as article4_0_0_ from article this_

为啥就是无法删除?

Article.java
package net.roseindia.model;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "article")
public class Article {

@Id
@GeneratedValue
@Column(name = "article_id")
private Integer articleId;

@Column(name = "article_name", nullable = false, length=20)
private String articleName;

@Column(name = "article_desc", nullable = false)
private String articleDesc;

@Column(name = "date_added")
private Date addedDate;

public Article() {
}

public Integer getArticleId() {
return articleId;
}

public void setArticleId(Integer articleId) {
this.articleId = articleId;
}

public String getArticleName() {
return articleName;
}

public void setArticleName(String articleName) {
this.articleName = articleName;
}

public String getArticleDesc() {
return articleDesc;
}

public void setArticleDesc(String articleDesc) {
this.articleDesc = articleDesc;
}

public Date getAddedDate() {
return addedDate;
}

public void setAddedDate(Date addedDate) {
this.addedDate = addedDate;
}
}


求教,谢谢了~

[解决办法]
事物操作要commit的。
[解决办法]
引用:
Quote: 引用:

if (null != article) {
session.delete(article);


}
还有就是你这个article查到没有啊,if进去了没?


这样改就好了,也不知道为啥
public void deleteArticle(Integer articleId){
System.out.println("Dao-->"+articleId);
Session session=sessionFactory.openSession();
Article article = (Article) session.get( Article.class,articleId);
session.beginTransaction();
if (null != article) {
session.delete(article);
}
session.getTransaction().commit();
session.close();

}

通过sessionFactory.getCurrentSession();这种方式获取session还需要别的配置你可能没有配,
sessionFactory.getCurrentSession()与sessionFactory.openSession()的区别
[解决办法]
问题非常好定位,你debug,看是否执行session.delete(article);

Article article = (Article) session.load( Article.class,articleId);//加载一个持久化对象
session.beginTransaction();//这个改为Transaction tx=session.beginTransaction();
if (null != article) {
session.delete(article);//删除对象
}
session.getTransaction().commit();//改为tx.commit();清理缓存,应该打印delete语句
session.close();//从缓存中删article,也就是把持久化对象变为游离态

读书人网 >J2EE开发

热点推荐