刚开始学hibernate3,各种困难,达人指教该操作插入一条通知。Java实体类:/**
 * 通知实体类
 *
 */
@Entity
@Table(name = "NOTICE")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class Notice extends BaseObject{
private static final long serialVersionUID = 1L;

private Long id; /** 通知的标题 */
private String title;

/** 通知的内容 */
private String content;

/** 创建人 */
private String operator;  @Column(name="TITLE")
public String getTitle() {
return title;
} public void setTitle(String title) {
this.title = title;
} @Column(name="CONTENT")
public String getContent() {
return content;
} public void setContent(String content) {
this.content = content;
} @Column(name="OPERATOR")
public String getOperator() {
return operator;
} public void setOperator(String operator) {
this.operator = operator;
} @Id
@Column(name="ID")
@GeneratedValue(strategy=GenerationType.AUTO)
public Long getId() {
return id;
} public void setId(Long id) {
this.id = id;
}
}执行类:
public class dao extends JpaDaoSupport {        /*
         * 插入操作
         */
public void create(Notice entity) {
Assert.notNull(entity);
getJpaTemplate().persist(entity);
}

        /**
         * main函数
         */
@SuppressWarnings("deprecation")
public static void main(String[] arg){
dao d = new dao();
Notice notice = new Notice();
notice.setTitle("jiaoqianle");
notice.setContent("ninnpnnnpinininninininiin");

Date start = new Date();
start.setYear(2004);
start.setMonth(06);
start.setDate(05);
start.setHours(20);
start.setMinutes(30);
start.setSeconds(0);
Date end = new Date();
end.setYear(2005);
end.setMonth(02);
end.setDate(14);
end.setHours(20);
end.setMinutes(30);
end.setSeconds(0);

notice.setStartTime(start);
notice.setEndTime(end);
Date now = new Date();
notice.setCreateTime(now);
notice.setOperator("admin");

System.out.println("-------insert--------");
try{
d.create(notice);
}catch(Exception e){
e.printStackTrace();
}
}}错误:
-------insert--------
Exception in thread "main" java.lang.NullPointerException
at com.chinacache.portal.dao.admin.dao.create(dao.java:14)
at com.chinacache.portal.dao.admin.dao.main(dao.java:27)
-------------------------------------------------------------------------

红色的地方抛空指针,这是为什么啊

解决方案 »

  1.   

    直接原因是JpaTemplate为null。
    为什么为null你自己再看看吧。
      

  2.   

    getJpaTemplate().persist(entity); 你没有拿到JpaTemplate,你有没有用Spring注入?这个对象你是怎么产生的?
      

  3.   

    如果你用Spring注入了,你下面的取法根本就绕过了Spring框架,而里面的JpaTemplate是依赖框架注入的
    dao d = new dao();根据Spring的设计,类的实例化由它来做,你直接取来用就行,如下代码:
    dao d = InitServlet.getBeanFactory().getBean("dao");我有一个ssh框架的例子,如果有兴趣可了解一下,如加入这个java技术网站后,更可获得站长的24小时技术支持,本站将成为您java学习路上的一个朋友