2012-05-04 19 views
0

sturts2および休止フレームワークを初めて使用しました。私はテストウェブアプリケーションを作っています。私は1つのモデルクラス 'UserDetails' DAOクラスの1つのDAOとアクションクラスの実装です。オブジェクトをデータベースに保存するとき、私は次のエラーを取得しています:休止状態を使用してオブジェクトをデータベースに保存できません

UserDetails.class

package org.project.model; 

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

@Entity 
@Table(name="user_details") 
public class UserDetails { 

private int userId; 
private String userName; 

@Id 
@GeneratedValue 
@Column(name="id") 
public int getUserId() { 
    return userId; 
} 

public void setUserId(int userId) { 
    this.userId = userId; 
} 

@Column(name="name") 
public String getUserName() { 
    return userName; 
} 

public void setUserName(String userName) { 
    this.userName = userName; 
} 
} 

UserDetailsDaoImpl - 実装クラス

package org.project.model.dao.iml; 

import java.util.List; 

import org.hibernate.Session; 
import org.hibernate.Transaction; 
import org.project.model.UserDetails; 
import org.project.model.dao.UserDetailsDao; 

import com.googlecode.s2hibernate.struts2.plugin.annotations.SessionTarget; 
import com.googlecode.s2hibernate.struts2.plugin.annotations.TransactionTarget; 

public class UserDetailsDaoImpl implements UserDetailsDao { 

    @SessionTarget 
    Session session; 
    @TransactionTarget 
    Transaction transaction; 

    @Override 
    public void saveUser(UserDetails user) { 
     try { 
      session.save(user); 
     } catch (Exception e) { 
      transaction.rollback(); 
      e.printStackTrace(); 
     } 
    } 

    @SuppressWarnings("unchecked") 
    @Override 
    public List<UserDetails> listUser() { 
     List<UserDetails> users = null; 
     try { 
      users = session.createQuery("from UserDetails").list(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return users; 
    } 
} 

Actionクラスは

package org.project.actions; 

import java.util.ArrayList; 
import java.util.List; 

import org.project.model.UserDetails; 
import org.project.model.dao.UserDetailsDao; 

import com.opensymphony.xwork2.ActionSupport; 
import com.opensymphony.xwork2.ModelDriven; 

public class UserAction extends ActionSupport implements ModelDriven<UserDetails>{ 

private static final long serialVersionUID = -2167265047934268752L; 

private UserDetails user = new UserDetails(); 
private UserDetailsDao userDao; 
private List<UserDetails> userList = new ArrayList<UserDetails>(); 

@Override 
public UserDetails getModel(){ 
    return user; 
} 

public String add() { 
    userDao.saveUser(user); 
    return SUCCESS; 
} 

public String list() { 
    userList = userDao.listUser(); 
    return SUCCESS; 
} 

public String execute(){ 
    return SUCCESS; 
} 

/* With all setter and getter methods */ 

されており、保存ボタンを押すと、次のエラーが発生します。

java.lang.NullPointerException 
org.project.actions.UserAction.add(UserAction.java:26) 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
java.lang.reflect.Method.invoke(Unknown Source) 
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:440) 
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:279) 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
com.googlecode.s2hibernate.struts2.plugin.s2hibernatevalidator.interceptor.HibernateValidatorInterceptor.intercept(HibernateValidatorInterceptor.java:77) 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) 
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:163) 
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) 
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122) 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) 
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195) 
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) 
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:148) 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) 
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:93) 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) 
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235) 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) 
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89) 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) 
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:128) 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) 
org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(ProfilingActivationInterceptor.java:104) 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) 
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267) 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) 
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126) 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) 
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:148) 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) 
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138) 
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) 
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164) 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) 
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:128) 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) 
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176) 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) 
com.googlecode.s2hibernate.struts2.plugin.interceptors.SessionTransactionInjectorInterceptor.intercept(SessionTransactionInjectorInterceptor.java:157) 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) 
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52) 
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:468) 
org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) 
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(Stru  tsPrepareAndExecuteFilter.java:76) 

何か間違っていますか?前もって感謝します。

+3

UserAction.javaの26行目に間違いがあります。これは、スタックトレースから通知されます。このコード行が何をするかを知っているのは唯一の人なので、私たちがどのように手伝ってくれるのか分かりません。 –

+0

今使っているクラスを投稿しました。 – tuazku

答えて

2

ライン26は

userDao.saveUser(user); 
をやっているし、それはNullPointerExceptionがスローされます。つまり、nullであってはならないものがnullです。このコード行では、何がnullになる可能性がありますか?もちろん userDao

userDaoをどこかで初期化しましたか?第

private UserDetailsDao userDao; 

ラインはあなたのuserDao変数を初期化し

private UserDetailsDao userDao = null; 

に相当します。

+0

ありがとうございました。それは今働いている。 – tuazku

+0

ありがとうございました。同じような問題に直面し、変数をnullとして初期化するのを忘れてしまった。あなたの答えは助けになりました。 – Makarand

関連する問題