首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

java ssh有关问题

2012-09-10 
java ssh问题最近使用struts2+spring3+hibernate3.3做练习测试,引入jpa生成Dao,最后用Action调用dao的时候

java ssh问题
最近使用struts2+spring3+hibernate3.3做练习测试,引入jpa生成Dao,最后用Action调用dao的时候显示null,请朋友们帮忙啊

代码如下:
applicationContext.xml:
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
<property name="persistenceUnitName" value="sshPU" />
</bean>
<bean id="transactionManager"
class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory"
ref="entityManagerFactory" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager" /><bean
id="BsTAssessUpdeventDAO"
class="com.tanyao.ibm.daoImp.BsTAssessUpdeventDAO">
<property name="entityManagerFactory"
ref="entityManagerFactory" />
</bean>
<bean id="BsTAssessEquipmentDAO"
class="com.tanyao.ibm.daoImp.BsTAssessEquipmentDAO">
<property name="entityManagerFactory"
ref="entityManagerFactory" />
</bean>
<bean id="BsTAssessJichengshangDAO"
class="com.tanyao.ibm.daoImp.BsTAssessJichengshangDAO">
<property name="entityManagerFactory"
ref="entityManagerFactory" />
</bean>
<bean id="BsTAssessActDAO"
class="com.tanyao.ibm.daoImp.BsTAssessActDAO">
<property name="entityManagerFactory"
ref="entityManagerFactory" />
</bean>
</beans>


Action:

public class Demo2Action extends ActionSupport implements ServletRequestAware{
private BsTAssessActDAO bstassessactdao;
private IBsTAssessActDAO ibstassessactdao;
private BsTAssessAct bstassessact;

public String demo1()
{
bstassessact = bstassessactdao.findById("402880ee3122d803013122d92c80002d");
System.out.println(ibstassessactdao+"输出的内容是月份:"+bstassessact.getMonth());
return SUCCESS;
}

public void setServletRequest(HttpServletRequest arg0) {
// TODO Auto-generated method stub

}

/**
* @return the bstassessactdao
*/
public BsTAssessActDAO getBstassessactdao() {
return bstassessactdao;
}

/**
* @param bstassessactdao the bstassessactdao to set
*/
public void setBstassessactdao(BsTAssessActDAO bstassessactdao) {
this.bstassessactdao = bstassessactdao;
}

/**
* @return the bstassessact
*/
public BsTAssessAct getBstassessact() {
return bstassessact;
}

/**
* @param bstassessact the bstassessact to set
*/
public void setBstassessact(BsTAssessAct bstassessact) {
this.bstassessact = bstassessact;
}

/**
* @return the ibstassessactdao
*/
public IBsTAssessActDAO getIbstassessactdao() {
return ibstassessactdao;
}

/**
* @param ibstassessactdao the ibstassessactdao to set
*/
public void setIbstassessactdao(IBsTAssessActDAO ibstassessactdao) {
this.ibstassessactdao = ibstassessactdao;
}
}

调用dao的时候后台不报bug,前台jsp界面直接显示NullPointException,代码指向action的dao,我调试debug发现dao为空,请朋友们帮忙看看,如何实现spring注入hibernate,然后调用到的~


[解决办法]
最好给dao的代码看看,继承hibernatedaosupport类了吗?配置 里我没看到就hibernateTimplte的注入! 
例如:
public class BaseDAOImpl<T> extends HibernateDaoSupport implements BaseDAO<T> {

现在我倒认为你的配置文件有问题,有点乱,没仔细看,你再试试

[解决办法]
我也没看你上面这么多代码,太多了,
大概出现这问题的原因
1.你的配置和你在action对应的dao不一样,(很可能是你配置首写的是大写,在action却是小写),


2.你在action没有有dao的get.set方法
3.这是不可饶恕的,你的配置了问题。
最后送你一句话:以后认真点。。。。
[解决办法]
bean文件的id要和action中的id要一样。具体原因就不多说了,
观看你上面的你好像是用了2层。一个是表示层,一个是数据访问层,却没有业务逻辑层。
给你点建议
1.BsTAssessActDAO尽量全部是bsTAssessActDAO,别有时大写有时小写。
2.命名规范。
<bean id="BsTAssessActDAO" class="com.tanyao.ibm.daoImp.BsTAssessActDAO">
上面是你写的,这是你的dao的实现层吗?如果是,类名这样BsTAssessActDAOImpl,
3.逻辑清晰。既然你用了spring为什么你的配置是上面的这样我有点疑问,

热点排行