Views:  BKHT.TAB_SCAN
Hibernate自动生成JOPO类与XML配置文件
生成了两个JOPO:TabScan与TabScanId
生成了一个XML:TabScan.hbm.xmlTabScan类package com.htky.po;/**
 * TabScan generated by MyEclipse Persistence Tools
 */public class TabScan implements java.io.Serializable { // Fields private TabScanId id; // Constructors /** default constructor */
public TabScan() {
} /** full constructor */
public TabScan(TabScanId id) {
this.id = id;
} // Property accessors public TabScanId getId() {
return this.id;
} public void setId(TabScanId id) {
this.id = id;
}}
TabScanId
private String billCode; private String scanDate; private String registerDate; private String scanType; private String scanSite; private String preOrNextStation; private String scanMan; private String dispatchOrSendMan; private String class_; private String dispatchSite; private String re; private String subBillCode; private String scanPrincipal; private String sitePhone; private String employeeNamePhone; private String nextPrincipal; private String nextPhone; private String destinationPrincipal; private String destinationPhone;set get........
TabScan.hbm.xml<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
    <class name="com.htky.po.TabScan" table="TAB_SCAN" schema="BKHT">
        <composite-id name="id" class="com.htky.po.TabScanId">
            <key-property name="billCode" type="java.lang.String">
                <column name="BILL_CODE" length="20" />
            </key-property>
            <key-property name="scanDate" type="java.lang.String">
                <column name="SCAN_DATE" length="19" />
            </key-property>
            <key-property name="registerDate" type="java.lang.String">
                <column name="REGISTER_DATE" length="16" />
            </key-property>
            <key-property name="scanType" type="java.lang.String">
                <column name="SCAN_TYPE" length="30" />
            </key-property>
            <key-property name="scanSite" type="java.lang.String">
                <column name="SCAN_SITE" length="30" />
            </key-property>
            <key-property name="preOrNextStation" type="java.lang.String">
                <column name="PRE_OR_NEXT_STATION" length="30" />
            </key-property>
            <key-property name="scanMan" type="java.lang.String">
                <column name="SCAN_MAN" length="30" />
            </key-property>
            <key-property name="dispatchOrSendMan" type="java.lang.String">
                <column name="DISPATCH_OR_SEND_MAN" length="30" />
            </key-property>
            <key-property name="class_" type="java.lang.String">
                <column name="CLASS" length="30" />
            </key-property>
            <key-property name="dispatchSite" type="java.lang.String">
                <column name="DISPATCH_SITE" length="30" />
            </key-property>
            <key-property name="re" type="java.lang.String">
                <column name="REMARK" length="100" />
            </key-property>
            <key-property name="subBillCode" type="java.lang.String">
                <column name="SUB_BILL_CODE" length="20" />
            </key-property>
            <key-property name="scanPrincipal" type="java.lang.String">
                <column name="SCAN_PRINCIPAL" length="30" />
            </key-property>
            <key-property name="sitePhone" type="java.lang.String">
                <column name="SITE_PHONE" length="500" />
            </key-property>
            <key-property name="employeeNamePhone" type="java.lang.String">
                <column name="EMPLOYEE_NAME_PHONE" length="50" />
            </key-property>
            <key-property name="nextPrincipal" type="java.lang.String">
                <column name="NEXT_PRINCIPAL" length="30" />
            </key-property>
            <key-property name="nextPhone" type="java.lang.String">
                <column name="NEXT_PHONE" length="500" />
            </key-property>
            <key-property name="destinationPrincipal" type="java.lang.String">
                <column name="DESTINATION_PRINCIPAL" length="30" />
            </key-property>
            <key-property name="destinationPhone" type="java.lang.String">
                <column name="DESTINATION_PHONE" length="500" />
            </key-property>
        </composite-id>
    </class>
</hibernate-mapping>
Dao查询billCode=‘10001’的所有数据package com.htky.dao;import java.util.Iterator;
import java.util.List;import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.context.ApplicationContext;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.htky.po.TabScan;
import com.htky.po.TabScanId;public class HtkyDao extends HibernateDaoSupport{

public List selectById(String code){

TabScan ts = new TabScan();
ts.setId(new TabScanId());
Session session = this.getSession();
Query query = session.createQuery("from TabScan as t where t.id.billCode='10001'");
List<TabScan> list = query.list();

Iterator<TabScan> it = list.iterator();
while(it.hasNext()){
TabScan scan = new TabScan();
scan = it.next();
System.out.println(scan.getId().getScanMan());
} return null;
}

}
错误信息:
12:26:54,171 ERROR [action]:253 - Servlet.service() for servlet action threw exception
java.lang.NullPointerException
at com.htky.dao.HtkyDao.selectById(HtkyDao.java:29)
at com.htky.bo.Trackbo.executeSelectById(Trackbo.java:21)
at com.htweb.struts.action.TrackAction.execute(TrackAction.java:53)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:667)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)求解``````啊!郁闷了我一天的问题咯

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【xiaomaha】截止到2008-07-03 12:35:44的历史汇总数据(不包括此帖):
    发帖的总数量:53                       发帖的总分数:2244                     
    结贴的总数量:30                       结贴的总分数:1537                     
    无满意结贴数:1                        无满意结贴分:30                       
    未结的帖子数:23                       未结的总分数:707                      
    结贴的百分比:56.60 %               结分的百分比:68.49 %                  
    无满意结贴率:3.33  %               无满意结分率:1.95  %                  
    楼主加油
      

  2.   

     return null;
    你返回这个当然只能是null了
      

  3.   

    自己 改  下你的 hbm.xml  文件就可以了
    你就认为 billCode 是主键。
    <id>
      ....
    <id>
    <property> ...</property>
      

  4.   


    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <!-- 
        Mapping file autogenerated by MyEclipse Persistence Tools
    -->
    <hibernate-mapping>
        <class name="com.htky.po.TabScan" table="TAB_SCAN"> 
               <id name="billCode" type="java.lang.String"> 
                    <column name="BILL_CODE" length="20" /> 
                </id> 
                <property name="scanDate" type="java.lang.String">
                    <column name="SCAN_DATE" length="19" />
                </property>
                <property name="registerDate" type="java.lang.String">
                    <column name="REGISTER_DATE" length="16" />
                </property>
                <property name="scanType" type="java.lang.String">
                    <column name="SCAN_TYPE" length="30" />
                </property>
                <property name="scanSite" type="java.lang.String">
                    <column name="SCAN_SITE" length="30" />
                </property>
                <property name="preOrNextStation" type="java.lang.String">
                    <column name="PRE_OR_NEXT_STATION" length="30" />
                </property>
                <property name="scanMan" type="java.lang.String">
                    <column name="SCAN_MAN" length="30" />
                </property>
                <property name="dispatchOrSendMan" type="java.lang.String">
                    <column name="DISPATCH_OR_SEND_MAN" length="30" />
                </property>
                <property name="class_" type="java.lang.String">
                    <column name="CLASS" length="30" />
                </property>
                <property name="dispatchSite" type="java.lang.String">
                    <column name="DISPATCH_SITE" length="30" />
                </property>
                <property name="re" type="java.lang.String">
                    <column name="REMARK" length="100" />
                </property>
                <property name="subBillCode" type="java.lang.String">
                    <column name="SUB_BILL_CODE" length="20" />
                </property>
                <property name="scanPrincipal" type="java.lang.String">
                    <column name="SCAN_PRINCIPAL" length="30" />
                </property>
                <property name="sitePhone" type="java.lang.String">
                    <column name="SITE_PHONE" length="500" />
                </property>
                <property name="employeeNamePhone" type="java.lang.String">
                    <column name="EMPLOYEE_NAME_PHONE" length="50" />
                </property>
                <property name="nextPrincipal" type="java.lang.String">
                    <column name="NEXT_PRINCIPAL" length="30" />
                </property>
                <property name="nextPhone" type="java.lang.String">
                    <column name="NEXT_PHONE" length="500" />
                </property>
                <property name="destinationPrincipal" type="java.lang.String">
                    <column name="DESTINATION_PRINCIPAL" length="30" />
                </property>
                <property name="destinationPhone" type="java.lang.String">
                    <column name="DESTINATION_PHONE" length="500" />
                </property>
        </class>
    </hibernate-mapping>
    改成这样咯!
      

  5.   


    我可真服了楼主,你一次性定义那样多的复合主键
    你的HQL语句有问题
    上面已经有人说了