2012-03-18 41 views
0

私は最初のOneToMany関係を自分のhibernate 3.6.10プロジェクトに追加しました。ここでは一つのクラスは次のとおりです。ここでノードのデータ型がありません

/** 
* 
*/ 
package com.heavyweightsoftware.leal.model.schedule; 

import java.util.Collection; 

import javax.persistence.CascadeType; 
import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 
import javax.persistence.NamedQueries; 
import javax.persistence.NamedQuery; 
import javax.persistence.OneToMany; 
import javax.persistence.Table; 

import com.heavyweightsoftware.leal.helper.DateHelper; 
import com.heavyweightsoftware.leal.model.Pojo; 

/** 
* A particular collection of events that can be shared 
* @author Thom 
*/ 
@Entity 
@Table(name = "SCHEDULE") 
@NamedQueries({ 
    @NamedQuery(name = Schedule.COUNT_SCHED_ID,  query = "SELECT COUNT(*) " + 
                   "FROM Schedule s " + 
                   "WHERE s.scheduleId = :scheduleId"), 
    @NamedQuery(name = Schedule.COUNT_SCHED_NAME, query = "SELECT COUNT(*) " + 
                   "FROM ScheduleRole r, Schedule s, SystemUser u " + 
                   "WHERE u.email = :email " + 
                   " AND u.id = r.systemUserId " + 
                   " AND r.scheduleId = s.id " + 
                   " AND s.name = :scheduleName "), 
    @NamedQuery(name = Schedule.QUERY_EVENTS_BY_USER, query = "SELECT r.roleType, s,e " + 
                   "FROM Schedule s, ScheduleRole r, SystemUser u " + 
                   "WHERE u.email = :email " + 
                   " AND u.id = r.systemUserId " + 
                   " AND r.scheduleId = s.id " + 
                   " ") 
    } 
) 
public class Schedule extends Pojo { 

    public static final int  LENGTH_SCHEDULE_ID  = 32; 
    public static final String  COUNT_SCHED_ID   = "countScheduleId"; 
    public static final String  COUNT_SCHED_NAME   = "countScheduleName"; 
    public static final String  QUERY_EVENTS_BY_USER  = "findEventsByUser"; 

    @Column(name = "ID", nullable=false) 
    @Id @GeneratedValue(strategy=GenerationType.AUTO) 
    private Integer  id; 

    @Column(name = "NAME", nullable=false) 
    private String  name; 

    @Column(name = "SCHEDULE_ID", nullable=false, unique=true, length=LENGTH_SCHEDULE_ID) 
    private String  scheduleId; 

    @OneToMany(cascade = CascadeType.ALL) 
    private Collection<Event> events; 

    /* (non-Javadoc) 
    * @see com.heavyweightsoftware.leal.model.Pojo#toString() 
    */ 
    @Override 
    public String toString() { 
     StringBuilder sb = new StringBuilder(super.toString()); 
     sb.append('|'); 
     sb.append(getName()); 
     sb.append('|'); 
     sb.append(getScheduleId()); 
     return sb.toString(); 
    } 

    /* (non-Javadoc) 
    * @see java.lang.Object#hashCode() 
    */ 
    @Override 
    public int hashCode() { 
     final int prime = 31; 
     int result = super.hashCode(); 
     result = prime * result + ((id == null) ? 0 : id.hashCode()); 
     result = prime * result + ((name == null) ? 0 : name.hashCode()); 
     result = prime * result 
       + ((scheduleId == null) ? 0 : scheduleId.hashCode()); 
     return result; 
    } 

    /* (non-Javadoc) 
    * @see java.lang.Object#equals(java.lang.Object) 
    */ 
    @Override 
    public boolean equals(Object obj) { 
     if (this == obj) 
      return true; 
     if (!super.equals(obj)) 
      return false; 
     if (getClass() != obj.getClass()) 
      return false; 
     Schedule other = (Schedule) obj; 
     if (id == null) { 
      if (other.id != null) 
       return false; 
     } else if (!id.equals(other.id)) 
      return false; 
     if (name == null) { 
      if (other.name != null) 
       return false; 
     } else if (!name.equals(other.name)) 
      return false; 
     if (scheduleId == null) { 
      if (other.scheduleId != null) 
       return false; 
     } else if (!scheduleId.equals(other.scheduleId)) 
      return false; 
     return true; 
    } 

    /** 
    * @return the id 
    */ 
    public final Integer getId() { 
     return id; 
    } 

    /** 
    * @param id the id to set 
    */ 
    public final void setId(Integer id) { 
     this.id = id; 
    } 

    /** 
    * @return the name 
    */ 
    public final String getName() { 
     return name; 
    } 

    /** 
    * @param name the name to set 
    */ 
    public final void setName(String name) { 
     this.name = name; 
    } 

    /** 
    * @return 
    */ 
    public String getScheduleId() { 
     return scheduleId == null?scheduleId = DateHelper.getUniqueID():scheduleId; 
    } 

    /** 
    * @param scheduleId 
    */ 
    public void setScheduleId(String scheduleId) { 
     this.scheduleId = scheduleId; 
    } 

    /** 
    * @return the events 
    */ 
    public Collection<Event> getEvents() { 
     return events; 
    } 

    /** 
    * @param events the events to set 
    */ 
    public void setEvents(Collection<Event> events) { 
     this.events = events; 
    } 
} 

は、多くのクラスです:

/** 
* 
*/ 
package com.heavyweightsoftware.leal.model.schedule; 

import java.util.Calendar; 

import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 
import javax.persistence.NamedQueries; 
import javax.persistence.Table; 
import javax.persistence.Temporal; 
import javax.persistence.TemporalType; 

import com.heavyweightsoftware.leal.model.Pojo; 

/** 
* A particular event entry in a calendar 
* @author Thom 
*/ 
@Entity 
@Table(name = "EVENT") 
@NamedQueries({ 
    } 
) 
public class Event extends Pojo { 

    /** 
    * Length of the randomly generated event ID 
    */ 
    private static final int   LENGTH_EVENT_ID    = 32; 

    @Column(name = "ID", nullable=false) 
    @Id @GeneratedValue(strategy=GenerationType.AUTO) 
    private Integer  id; 

    @Column(name = "START_TIME") 
    @Temporal(TemporalType.TIMESTAMP) 
    private Calendar start; 

    @Column(name = "END_TIME") 
    @Temporal(TemporalType.TIMESTAMP) 
    private Calendar end; 

    @Column(name = "EVENT_NAME", nullable=false) 
    private String  eventName; 

    @Column(name = "EVENT_ID", nullable=false, unique=true, length=LENGTH_EVENT_ID) 
    private String  eventId; 

    @Column(name = "SCHEDULE_ID", nullable=false) 
    private Integer  scheduleId; 

    @Column(name = "LOCATION") 
    private String  location; 

    /* (non-Javadoc) 
    * @see java.lang.Object#hashCode() 
    */ 
    @Override 
    public int hashCode() { 
     final int prime = 31; 
     int result = super.hashCode(); 
     result = prime * result + ((end == null) ? 0 : end.hashCode()); 
     result = prime * result 
       + ((eventName == null) ? 0 : eventName.hashCode()); 
     result = prime * result + ((id == null) ? 0 : id.hashCode()); 
     result = prime * result 
       + ((location == null) ? 0 : location.hashCode()); 
     result = prime * result 
       + ((scheduleId == null) ? 0 : scheduleId.hashCode()); 
     result = prime * result + ((start == null) ? 0 : start.hashCode()); 
     return result; 
    } 

    /* (non-Javadoc) 
    * @see java.lang.Object#equals(java.lang.Object) 
    */ 
    @Override 
    public boolean equals(Object obj) { 
     if (this == obj) 
      return true; 
     if (!super.equals(obj)) 
      return false; 
     if (getClass() != obj.getClass()) 
      return false; 
     Event other = (Event) obj; 
     if (end == null) { 
      if (other.end != null) 
       return false; 
     } else if (!end.equals(other.end)) 
      return false; 
     if (eventName == null) { 
      if (other.eventName != null) 
       return false; 
     } else if (!eventName.equals(other.eventName)) 
      return false; 
     if (id == null) { 
      if (other.id != null) 
       return false; 
     } else if (!id.equals(other.id)) 
      return false; 
     if (location == null) { 
      if (other.location != null) 
       return false; 
     } else if (!location.equals(other.location)) 
      return false; 
     if (scheduleId == null) { 
      if (other.scheduleId != null) 
       return false; 
     } else if (!scheduleId.equals(other.scheduleId)) 
      return false; 
     if (start == null) { 
      if (other.start != null) 
       return false; 
     } else if (!start.equals(other.start)) 
      return false; 
     return true; 
    } 

    /* (non-Javadoc) 
    * @see com.heavyweightsoftware.leal.model.Pojo#toString() 
    */ 
    @Override 
    public String toString() { 
     StringBuilder sb = new StringBuilder(super.toString()); 
     sb.append('|'); 
     sb.append(getEventName()); 
     sb.append('|'); 
     sb.append(getTimestamp(getStart())); 
     sb.append('-'); 
     sb.append(getTimestamp(getEnd())); 
     sb.append("|scheduleId="); 
     sb.append(getScheduleId()); 
     sb.append('|'); 
     sb.append(getLocation()); 
     return sb.toString(); 
    } 

    /** 
    * @return the id 
    */ 
    public final Integer getId() { 
     return id; 
    } 

    /** 
    * @param id the id to set 
    */ 
    public final void setId(Integer id) { 
     this.id = id; 
    } 

    /** 
    * The start date of the event in UTC 
    * @return the start 
    */ 
    public final Calendar getStart() { 
     return start; 
    } 

    /** 
    * The start date of the event in UTC 
    * @param start the start to set 
    */ 
    public final void setStart(Calendar start) { 
     this.start = start; 
    } 

    /** 
    * The end date of the event in UTC 
    * @return the end 
    */ 
    public final Calendar getEnd() { 
     return end; 
    } 

    /** 
    * The end date of the event in UTC 
    * @param end the end to set 
    */ 
    public final void setEnd(Calendar end) { 
     this.end = end; 
    } 

    /** 
    * @return the eventId 
    */ 
    public String getEventId() { 
     return eventId; 
    } 

    /** 
    * @param eventId the eventId to set 
    */ 
    public void setEventId(String eventId) { 
     this.eventId = eventId; 
    } 

    /** 
    * @return the eventName 
    */ 
    public final String getEventName() { 
     return eventName; 
    } 

    /** 
    * @param eventName the eventName to set 
    */ 
    public final void setEventName(String eventName) { 
     this.eventName = eventName; 
    } 

    /** 
    * @return the location 
    */ 
    public final String getLocation() { 
     return location; 
    } 

    /** 
    * @param location the location to set 
    */ 
    public final void setLocation(String location) { 
     this.location = location; 
    } 

    /** 
    * @return the scheduleId 
    */ 
    public Integer getScheduleId() { 
     return scheduleId; 
    } 

    /** 
    * @param scheduleId the scheduleId to set 
    */ 
    public void setScheduleId(Integer scheduleId) { 
     this.scheduleId = scheduleId; 
    } 
} 

私は私が最終的に出てアイロンをかけてしまったいくつかのパスの問題がありました。その後、私は新しいエラーが発生しました。 java.lang.IllegalStateException:によって引き起こさ

ノードのデータはありませんタイプ:org.hibernate.hql.ast.tree.IdentNode - [IDENT] IdentNode: 'E' {originalText = E}

ありますこのエラーの場所はありません。どこに行くのかわかりません。

答えて

2

E(r.roleTypeを選択、S、E)が、その参照その明確ではないがあります:おそらく...うーん

@NamedQuery(name = Schedule.QUERY_EVENTS_BY_USER, query = "SELECT r.roleType, s,e " + 
                   "FROM Schedule s, ScheduleRole r, SystemUser u " + 
                   "WHERE u.email = :email " + 
                   " AND u.id = r.systemUserId " + 
                   " AND r.scheduleId = s.id " + 
                   " ") 
+0

私は1つのテーブルからのみ選択していたnHibernateで同じ問題を抱えていましたが、selectの列名の1つも別のnHibernateテーブルの名前になりました。 – row1

0

私は手足に出て、HQLで新しいキーワードを忘れたと思います。あなたの名前付きクエリで

+0

が。新しいキーワードは何ですか? – Thom

+0

クラス全体を貼り付けることはできますか? –

+0

両方のクラスを追加するように編集しました。 – Thom

関連する問題