数据库中:
View:TAB_SCANHibernate中生成了2个PO对象第一个为:TabScanpackage 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;
}}
第二个为:TabScanIdpackage com.htky.po;/**
 * TabScanId generated by MyEclipse Persistence Tools
 */public class TabScanId implements java.io.Serializable { // Fields 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; // Constructors /** default constructor */
public TabScanId() {
} /** full constructor */
public String getBillCode() {
return this.billCode;
} public void setBillCode(String billCode) {
this.billCode = billCode;
} public String getScanDate() {
return this.scanDate;
} public void setScanDate(String scanDate) {
this.scanDate = scanDate;
} public String getRegisterDate() {
return this.registerDate;
} public void setRegisterDate(String registerDate) {
this.registerDate = registerDate;
} public String getScanType() {
return this.scanType;
} public void setScanType(String scanType) {
this.scanType = scanType;
} public String getScanSite() {
return this.scanSite;
} public void setScanSite(String scanSite) {
this.scanSite = scanSite;
} public String getPreOrNextStation() {
return this.preOrNextStation;
} public void setPreOrNextStation(String preOrNextStation) {
this.preOrNextStation = preOrNextStation;
} public String getScanMan() {
return this.scanMan;
} public void setScanMan(String scanMan) {
this.scanMan = scanMan;
} public String getDispatchOrSendMan() {
return this.dispatchOrSendMan;
} public void setDispatchOrSendMan(String dispatchOrSendMan) {
this.dispatchOrSendMan = dispatchOrSendMan;
} public String getClass_() {
return this.class_;
} public void setClass_(String class_) {
this.class_ = class_;
} public String getDispatchSite() {
return this.dispatchSite;
} public void setDispatchSite(String dispatchSite) {
this.dispatchSite = dispatchSite;
} public String getRe() {
return this.re;
} public void setRe(String re) {
this.re = re;
} public String getSubBillCode() {
return this.subBillCode;
} public void setSubBillCode(String subBillCode) {
this.subBillCode = subBillCode;
} public String getScanPrincipal() {
return this.scanPrincipal;
} public void setScanPrincipal(String scanPrincipal) {
this.scanPrincipal = scanPrincipal;
} public String getSitePhone() {
return this.sitePhone;
} public void setSitePhone(String sitePhone) {
this.sitePhone = sitePhone;
} public String getEmployeeNamePhone() {
return this.employeeNamePhone;
} public void setEmployeeNamePhone(String employeeNamePhone) {
this.employeeNamePhone = employeeNamePhone;
} public String getNextPrincipal() {
return this.nextPrincipal;
} public void setNextPrincipal(String nextPrincipal) {
this.nextPrincipal = nextPrincipal;
}..........太多了``复制不过来
}
<?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>问题是``我SSH中如何查找billCode?有两个PO类`现在我应该如何做```````急```````希望给予详细点的答案!谢谢

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【xiaomaha】截止到2008-07-02 22:42:55的历史汇总数据(不包括此帖):
    发帖的总数量:51                       发帖的总分数:2044                     
    结贴的总数量:29                       结贴的总分数:1437                     
    无满意结贴数:1                        无满意结贴分:30                       
    未结的帖子数:22                       未结的总分数:607                      
    结贴的百分比:56.86 %               结分的百分比:70.30 %                  
    无满意结贴率:3.45  %               无满意结分率:2.09  %                  
    楼主加油
      

  2.   

    晕,怎么有组合主键啊!呵呵原则上,你用 TabScanId  就可以了,可惜你现在得用TabScan.TabScanId.billCode 了!
      

  3.   

    TabScan.getId().getBillCode()
      这样试下吧
      

  4.   


    查询billCode 为10001的数据!是不是这样写?
    String hql = "from TabScan where TabScan.TabScanId.billCode=10001";
      

  5.   

    是不是数据库没有定义主键呢?这里通过hibernate的session查找对象(或者说是记录),返回的是TabScan,而TabScanId则是TabScan的一个属性(记录的主键):
    Query query = session.createQuery("from TabScan");
    List<TabScan> list = query.list();
    String billCode = list.get(0).getTabScanId().getBillCode();
    .....
      

  6.   

    错了,是:list.get(0).getId().getBillCode(); 
      

  7.   

    朋友``你的说的方法基本可以咯`不错了
    但是我这个表中有2亿多条数据``我只需要查找billCode=10001的!
    from TabScan where billCode=10001
    应该行不通!
      

  8.   

    Query query = session.createQuery("from TabScan where billCode='10001'"); 
      

  9.   

    原来的 TabScanId 类去掉public class TabScan implements java.io.Serializable {
       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}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">
                <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>
      

  10.   


    Caused by: java.sql.SQLException: ORA-00904: "BILLCODE": 无效的标识符
      

  11.   

    现在的查询可以用
    Query query = session.createQuery("from TabScan where billCode='10001'");未改前的查询
    Query query = session.createQuery("from TabScan as t where t.id.billCode='10001'");
      

  12.   

    from TabScan as t where t.id.billCode='10001'
      

  13.   

    String hql = "select tab from TabScan as tab where tab.id.billCode=:code"Query query = session.createQuery(hql).setString("code","10001");这样应该是可以的吧!!要是不行的话,可能就要用一下连接啦@