这个是建立的表
CREATE TABLE `article` (
`article_id` bigint(20) NOT NULL auto_increment,
`article_name` varchar(20) NOT NULL,
`article_desc` text NOT NULL,
`date_added` datetime default NULL,
PRIMARY KEY (`article_id`)
)
CREATE TABLE `article` (
`article_id` bigint(20) NOT NULL auto_increment,
`article_name` varchar(20) NOT NULL,
`article_desc` text NOT NULL,
`date_added` datetime default NULL,
PRIMARY KEY (`article_id`)
)
Session session = sessionFactory.getCurrentSession();然后直接操作session要更方便吧
public void deleteArticle(Integer articleId){
System.out.println("Dao-->"+articleId);
Session session=sessionFactory.getCurrentSession();
Article article = (Article) session.load( Article.class,articleId);
session.beginTransaction();
if (null != article) {
session.delete(article);
}
session.getTransaction().commit();
session.close(); }
底下的console这样提示
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_
public void deleteArticle(Integer articleId){
System.out.println("Dao-->"+articleId);
Session session=sessionFactory.getCurrentSession();
Article article = (Article) session.load( Article.class,articleId);
session.beginTransaction();
if (null != article) {
session.delete(article);
}
session.getTransaction().commit();
session.close(); }
底下的console这样提示
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_
public void deleteArticle(Integer articleId){
System.out.println("Dao-->"+articleId);
Session session=sessionFactory.getCurrentSession();
Article article = (Article) session.load( Article.class,articleId);
session.beginTransaction();
if (null != article) {
session.delete(article);
}
session.getTransaction().commit();
session.close(); }
底下的console这样提示
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_
System.out.println("Dao-->"+articleId);
Session session=sessionFactory.getCurrentSession();
Transaction transaction = session.beginTransaction();
Article article = (Article) session.load( Article.class,articleId);
if (null != article) {
session.delete(article);
}
transaction.commit();
//session.close();这里不用关闭,通过sessionFactory.getCurrentSession();获取的session会自动关闭 }
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(); }
我如下改就好了,也不知道为啥
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(); }
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(); }
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()的区别
session.beginTransaction();//这个改为Transaction tx=session.beginTransaction();
if (null != article) {
session.delete(article);//删除对象
}
session.getTransaction().commit();//改为tx.commit();清理缓存,应该打印delete语句
session.close();//从缓存中删article,也就是把持久化对象变为游离态
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()的区别
谢谢这位大神的认真回复!
getSession().getTransaction().begin();getSession().getTransaction().commit();就可以删除了,谢谢