hibernate 复合主键查询的问题

来源:互联网 发布:java重载的作用 编辑:程序博客网 时间:2024/05/18 17:04

lsinf.hbm.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
   
<hibernate-mapping >
 <class table="lsinf" name="time.Useri">
   <composite-id name="pk" class="time.lsinfKey">  
       
      <key-property name="end" column="end"/>
      <key-property name="id" column="id"/>  
      <key-property name="start" column="start"/> 
   </composite-id>  
  <property name="state"  column="state"/>
  <property name="note"  column="note"/>
  <property name="sh"  column="sh"/> 
 </class>
</hibernate-mapping>

 

 

//lsinfKey类

package time;
import java.io.Serializable;
import org.apache.commons.lang.builder.EqualsBuilder;   
import org.apache.commons.lang.builder.HashCodeBuilder;
public class lsinfKey implements Serializable{
 private String start;   
    private String end;   
    private String id;
   
       
    public boolean equals(Object obj) {   
        if(!(obj instanceof Useri)) {   
            return false;   
         }   
           
         lsinfKey userPK = (lsinfKey)obj;   
        return new EqualsBuilder()   
             .appendSuper(super.equals(obj))   
             .append(this.start, userPK.start)   
             .append(this.id, userPK.id) 
             .append(this.end, userPK.end)
             .isEquals();           
     }   
       
    public int hasCode() {   
        return new HashCodeBuilder(-528253723, -475504089)   
             .appendSuper(super.hashCode())   
             .append(this.start).append(this.id)
             .append(this.end)
             .toHashCode();               
     }

 public String getStart() {
  return start;
 }

 public void setStart(String start) {
  this.start = start;
 }

 public String getEnd() {
  return end;
 }

 public void setEnd(String end) {
  this.end = end;
 }

 public String getId() {
  return id;
 }

 public void setId(String id) {
  this.id = id;
 }   

}
//建立Useri类

package time;

public class Useri {
  private lsinfKey pk;//主键类
 
 public lsinfKey getPk() {
  return pk;
 }

 public void setPk(lsinfKey pk) {
  this.pk = pk;
 }

  private String note;
  private String sh;
  private String state;

 public String getNote() {
  return note;
 }

 public void setNote(String note) {
  this.note = note;
 }

 public String getSh() {
  return sh;
 }

 public void setSh(String sh) {
  this.sh = sh;
 }

 public String getState() {
  return state;
 }

 public void setState(String state) {
  this.state = state;
 }
 
 }

测试代码

SQLQuery query=ss.createSQLQuery("select start from lsinf").addEntity(Useri.class);

 

报错

14:10:32,578  INFO Dialect:106 - Using dialect: com.hxtt.support.hibernate.HxttAccessDialect
org.hibernate.exception.GenericJDBCException: could not execute query
 at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
 at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)
 at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
 at org.hibernate.loader.Loader.doList(Loader.java:2148)
 at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2029)
 at org.hibernate.loader.Loader.list(Loader.java:2024)
 at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:118)
 at org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1658)
 at org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:142)
 at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:164)
 at time.InsertProduct.main(InsertProduct.java:42)
Caused by: java.sql.SQLException: Syntax error:  Stopped parse at start
 at com.hxtt.global.SQLState.SQLException(Unknown Source)
 at com.hxtt.a.b.a(Unknown Source)
 at com.hxtt.a.b.a(Unknown Source)
 at com.hxtt.a.b.g(Unknown Source)
 at com.hxtt.sql.bm.o(Unknown Source)
 at com.hxtt.sql.ag.if(Unknown Source)
 at com.hxtt.sql.dg.<init>(Unknown Source)
 at com.hxtt.sql.bm.a(Unknown Source)
 at com.hxtt.sql.bm.prepareStatement(Unknown Source)
 at com.hxtt.sql.bm.prepareStatement(Unknown Source)
 at com.hxtt.sql.bm.prepareStatement(Unknown Source)
 at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:497)
 at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:415)
 at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:139)
 at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1561)
 at org.hibernate.loader.Loader.doQuery(Loader.java:661)
 at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
 at org.hibernate.loader.Loader.doList(Loader.java:2145)
 ... 7 more

 

测试代码

SQLQuery query=ss.createSQLQuery("select * from lsinf").addEntity(Useri.class);

 这样不会报错,

 

那位高手指点下

 

原创粉丝点击