@Transactional
    public void delete(Long id) {
*        User user = (User) session.get(User.class, id);
*        session.delete(user);
    }
Kemungkinan besar memang sudah di-delete waktu pertama kali.
Waktu kedua method session.get() menghasilkan null.
Coba ganti seperti ini:

    @Transactional
    public void delete(Long id) {
*        User user = (User) session.get(User.class, id);*
*        if(user == null) {*
*            System.out.println("data memang udah ga ada");*
*        } else {*
*            System.out.println("data dihapus id=" + id);*
*            session.delete(user);*
*        }
*    }

On 5 March 2010 13:07, Mirza Akhena <mirken...@gmail.com> wrote:

>
>
> Halo temen2 Juger sekalian..
>
> Saat ini aku lagi belajar pake Hibernate dalam Spring dan aku udah buat
> project Helloworld untuk mempelajarinya.
>
> aku pake MultiActionController pada Controllernya (UserController.java)
> pake Annotation pada class Modelnya (User.java)
>
> Tapi pas aku mau klik link delete (pada userPage.jsp), kok gak berhasil
> yah?
>
> klik (link "Hapus") utk pertama kali gak ada respon apa2 (harusnya udah
> hilang datanya),
> tapi pas klik dua kali malah muncul error :
>
> *java.lang.IllegalArgumentException: attempt to create delete event with null 
> entity*
>
> pas di cek di MySQL, datanya masih utuh, belum kehapus,
>
>
>
> Mohon bantuannya ya temen2, kira2 salahnya dimana ya?
>
>
>
>
>
>
> ini aku lampirin kode helloworldnya :
>
> ====================================================
> *web.xml*
>
> <?xml version="1.0" encoding="UTF-8"?>
> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>     xmlns="http://java.sun.com/xml/ns/javaee";
>     xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd";
>     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
>     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd";
>     id="WebApp_ID" version="2.5">
>
>     <display-name>simplespringhibernate</display-name>
>     <welcome-file-list>
>         <welcome-file>index.jsp</welcome-file>
>     </welcome-file-list>
>
>     <servlet>
>         <servlet-name>simplespringhibernate</servlet-name>
>
> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
>         <load-on-startup>1</load-on-startup>
>     </servlet>
>
>     <servlet-mapping>
>         <servlet-name>simplespringhibernate</servlet-name>
>         <url-pattern>*.htm</url-pattern>
>     </servlet-mapping>
>
> </web-app>
>
>
> ====================================================
> *simplespringhibernate-servlet.xml*
>
> <?xml version="1.0" encoding="UTF-8"?>
> <beans xmlns="http://www.springframework.org/schema/beans";
>     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>     xmlns:tx="http://www.springframework.org/schema/tx";
>     xsi:schemaLocation="http://www.springframework.org/schema/beans
>     http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
>     http://www.springframework.org/schema/tx
>     http://www.springframework.org/schema/tx/spring-tx-2.5.xsd";>
>
>     <bean id="dataSource"
> class="org.apache.tomcat.dbcp.dbcp.BasicDataSource">
>         <property name="driverClassName" value="com.mysql.jdbc.Driver" />
>         <property name="url" value="jdbc:mysql://localhost/simple" />
>         <property name="username" value="root" />
>         <property name="password" value="" />
>     </bean>
>
>     <bean id="sessionFactory"
>
> class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"
>         destroy-method="destroy">
>         <property name="dataSource" ref="dataSource" />
>         <property name="annotatedClasses">
>             <list>
>                 <value>com.simple.model.User</value>
>             </list>
>         </property>
>         <property name="hibernateProperties">
>             <props>
>                 <prop
> key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
>                 <prop key="hibernate.show_sql">true</prop>
>                 <prop key="hibernate.hbm2ddl.auto">update</prop>
>             </props>
>         </property>
>     </bean>
>
>     <tx:annotation-driven />
>
>     <bean id="transactionManager"
>
> class="org.springframework.orm.hibernate3.HibernateTransactionManager">
>         <property name="sessionFactory" ref="sessionFactory" />
>     </bean>
>
>     <bean id="internalResourceViewResolver"
>
> class="org.springframework.web.servlet.view.InternalResourceViewResolver">
>         <property name="prefix" value="/WEB-INF/view/" />
>         <property name="suffix" value=".jsp" />
>     </bean>
>
>     <bean name="/userPage/*.htm"
> class="com.simple.controller.UserController">
>         <constructor-arg ref="sessionFactory" />
>     </bean>
>
> </beans>
>
>
> ====================================================
> *User.java*
>
> package com.simple.model;
>
> import javax.persistence.Column;
> import javax.persistence.Entity;
> import javax.persistence.GeneratedValue;
> import javax.persistence.GenerationType;
> import javax.persistence.Id;
> import javax.persistence.Table;
>
> @Entity
> @Table(name = "USER")
> public class User {
>
>     @Id
>     @GeneratedValue(strategy = GenerationType.AUTO)
>     @Column(name = "ID")
>     private Long id;
>
>     @Column(name = "NAME", length = 30, nullable = false)
>     private String name;
>
>     @Column(name = "AGE", nullable = false)
>     private int age;
>
>     public Long getId() { return id; }
>
>     public void setId(Long id) { this.id = id; }
>
>     public String getName() { return name; }
>
>     public void setName(String name) { this.name = name; }
>
>     public int getAge() { return age; }
>
>     public void setAge(int age) { this.age = age; }
>
> }
>
> ====================================================
> *UserController.java*
>
> package com.simple.controller;
>
> import java.util.List;
>
> import javax.servlet.http.HttpServletRequest;
> import javax.servlet.http.HttpServletResponse;
>
> import org.hibernate.Session;
> import org.hibernate.SessionFactory;
> import org.springframework.web.bind.ServletRequestUtils;
> import org.springframework.web.servlet.ModelAndView;
> import
> org.springframework.web.servlet.mvc.multiaction.MultiActionController;
>
> import com.simple.model.User;
> import com.simple.service.UserService;
>
> public class UserController extends MultiActionController {
>
>     private UserService userService;
>
>     public UserController(SessionFactory sessionFactory) {
>         Session session = sessionFactory.openSession();
>         userService = new UserService(session);
>     }
>
>     public ModelAndView add(HttpServletRequest request, HttpServletResponse
> httpServletResponse, User user) throws Exception {
>         userService.store(user);
>         return new ModelAndView("redirect:list.htm");
>     }
>
>     public ModelAndView remove(HttpServletRequest request,
> HttpServletResponse response) throws Exception {
>         Long id = ServletRequestUtils.getLongParameter(request, "id");
>         userService.delete(id);
>         return new ModelAndView("redirect:list.htm");
>     }
>
>     public ModelAndView list(HttpServletRequest request,
> HttpServletResponse httpServletResponse) throws Exception {
>         List<User> users = userService.getAll();
>         return new ModelAndView("userPage", "users", users);
>     }
>
> }
>
>
> ====================================================
> *UserService.java*
>
> package com.simple.service;
>
> import java.util.List;
>
> import org.hibernate.Session;
> import org.springframework.transaction.annotation.Transactional;
>
> import com.simple.model.User;
>
> public class UserService {
>
>     private Session session;
>
>     public UserService(Session session) {
>         this.session = session;
>     }
>
>     @Transactional
>     public void store(User user) {
>         session.saveOrUpdate(user);
>     }
>
>     @Transactional
>     public void delete(Long id) {
>         User user = (User) session.get(User.class, id);
>         session.delete(user);
>     }
>
>     @SuppressWarnings("unchecked")
>     @Transactional(readOnly = true)
>     public List<User> getAll() {
>         return session.createQuery("from User").list();
>     }
> }
>
> ====================================================
> *userPage.jsp*
>
> <%...@taglib uri="http://java.sun.com/jsp/jstl/core"; prefix="c"%>
>
> <html>
> <head>
> <title>List User</title>
> </head>
> <body>
>
> <form action="add.htm">
> <table border="1">
>     <tr>
>         <td>Nama</td>
>         <td><input type="text" name="name" /></td>
>     </tr>
>     <tr>
>         <td>Umur</td>
>         <td><input type="text" name="age" /></td>
>     </tr>
> </table>
> <input type="submit" value="Daftar" />
> </form>
>
> <table border="1">
>     <tr>
>         <th>Nama</th>
>         <th>Umur</th>
>         <th>Hapus</th>
>     </tr>
>     <c:forEach items="${users}" var="u">
>         <tr>
>             <td>${u.name}</td>
>             <td>${u.age}</td>
>             <td><a href="/simplespringhibernate/userPage/remove.htm?id=${
> u.id}">Hapus</a></td>
>         </tr>
>     </c:forEach>
> </table>
>
> </body>
> </html>
>
> ====================================================
> *index.jsp*
>
> <%...@taglib uri="http://java.sun.com/jsp/jstl/core"; prefix="c"%>
>
> <c:redirect url="userPage/list.htm" />
>
>
>
>
>
> ====================================================
>
> --
> Best Regards
>
> Mirza Akhena
>
>  
>



-- 
-o--o---( ^  ^ )---o--o-
Speed Optimization: Seek and ye shall find!
In case it isn't in the cache yet, too bad, you've to wait 40x longer.
Daniel Baktiar (http://dbaktiar.wordpress.com)

Kirim email ke