Не удалось использовать выборку выборок из HQL - PullRequest
0 голосов
/ 14 сентября 2011

Моя проблема в том, что я не могу включить свойства коллекции класса в мой запрос на выбор. У меня есть отношение родитель / потомок между двумя классами (Team и Member)

для повышения производительности выборки.хотел бы использовать HSL-запрос только для выбора необходимых свойств возвращаемого объекта (строки), это делается с помощью:

List<Object> returnlist = session.createQuery("select t.name, t.members from Team t").list();

, но это вызывает исключение гибернации:

WARN org.hibernate.util.JDBCExceptionReporter,JDBCExceptionReporter:100 - SQL Error: -1, SQLState: 42X01
ERROR org.hibernate.util.JDBCExceptionReporter,JDBCExceptionReporter:101 - Syntax error: Encountered "." at line 1, column 33.

Я приложил полные источники класса ниже.Большое спасибо за то, что помогли мне. Мне нужно добавить дополнительное соединение, чтобы оно заработало, или это ошибка в спящем режиме?

Team.java

@Entity()
@Table(name = "TEAM")
public class Team implements Serializable {

  private Long id; 
  private String name;
  private String remark; 
  private List<Member> members = new ArrayList<Member>();

  @Id
  @Column(name = "id")
  @GeneratedValue(strategy=GenerationType.AUTO)
  public Long getId() {
      return id;
  }

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

  @CollectionOfElements
  @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy="team")
  public List<Member> getMembers() {
      return members;
  }


  public void addMember(Member member) {
      if (!getMembers().contains(member)) {
        getMembers().add(member);
          if (member.getTeam() != null) {
            member.getTeam().getMembers().remove(members);
          }
          member.setTeam(this);
      }
  }

  public void setMembers(List<Member> members) {
      this.members = members;
  }

    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public String getRemark() {
        return remark;
    }

}

Member.java

@Entity()
@Table(name = "MEMBER")
public class Member implements Serializable {

    private Long id;
    private String name = "";
    private Team team;

    @Id
    @Column(name = "id")
    @GeneratedValue(strategy=GenerationType.AUTO)
    public Long getId() {
        return id;
    }

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


    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setTeam(Team team) {
        this.team = team;
    }

    @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    @JoinColumn(name = "team_id")
    public Team getTeam() {
        return team;
    }

}
...