【发布时间】:2013-11-25 21:15:17
【问题描述】:
我正在尝试使用 Spring 3 Struts 2 和 Hibernate 设置一个小型 Web 应用程序,但我做错了我无法弄清楚它是什么,当我尝试调用 struts 控制器中的服务层时,我得到一个 NullPointerException .
实体:
@Entity(name="T_Personne")
public class Personne {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
@Column(nullable=false,length=30)
private String nom;
}
道:
@Repository(value="personneDao")
public class PersonneDaoImpl implements IPersonneDao{
@PersistenceContext
private EntityManager em;
public void setEntityManager(EntityManager entityManager) {
this.em = entityManager;
}
public void save(Personne per) {
em.persist(per);
}
}
服务:
@Service(value="personneService")
@Transactional
public class PersonneServiceImpl implements IPersonneService {
@Autowired
private IPersonneDao personneDao;
public void savePersonne(Personne per) {
personneDao.save(per);
}
}
控制器:
public class HelloAction extends ActionSupport{
@Autowired
private IPersonneService personneService;
public String execute() throws Exception{
Personne p = personneService.findPersonneById(1L);
System.out.println("Nom : "+ p.getNom() + "Prenom : "+ p.getPrenom());
return SUCCESS;
}
}
Spring XML:
<context:annotation-config />
<context:component-scan base-package="net.cadr" />
<tx:annotation-driven transaction-manager="transactionManager"/>
<bean class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean" id="entityManagerFactory">
<property name="persistenceUnitName" value="MyPersistenceUnit"/>
</bean>
<bean class="org.springframework.orm.jpa.JpaTransactionManager" id="transactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>
Struts XML:
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="true" />
<package name="personne" extends="struts-default">
<action name="Hello" class="net.cadr.actions.HelloAction">
<result name="success">/views/hello.html</result>
</action>
</package>
</struts>
问题是实体管理器创建表,struts 控制器也在工作,我可以映射动作并调用它们!!!
我错过了什么?
谢谢
【问题讨论】:
-
你从哪里得到
NPE? -
您的 Personne 服务没有
findPersonneById方法。您确定代码可以编译,还是您没有发布正确的代码? -
嗨,我在这一行得到了异常 Personne p = personneService.findPersonneById(1L);谢谢
-
第18行是哪一个?
-
嗨,第 18 行是:Personne p = personneService.findPersonneById(1L);
标签: java spring hibernate struts2 jpa-2.0