Hibernate CreateSQL Query Problem - PullRequest
       3

Hibernate CreateSQL Query Problem

0 голосов
/ 06 мая 2010

Я пытаюсь использовать hibernates, встроенные в функцию createql, но, похоже, следующий запрос не нравится

List =hibernateSession.createSQLQuery("SELECT number, location FROM table 
WHERE other_number IN 
(SELECT f.number FROM table2 AS f JOIN table3 AS g on f.number = g.number 
WHERE g.other_number = " + var + ") 
ORDER BY number").addEntity(Table.class).list();

У меня такое ощущение, что это из вложенного оператора select, но я не уверен. Внутренний выбор используется в другом месте кода, и он прекрасно возвращает результаты.

Это мое отображение для первой таблицы:

<hibernate-mapping>

    <class name="org.efs.openreports.objects.Table" table="table">

        <id name="id" column="other_number" type="java.lang.Integer">
            <generator class="native"/>
        </id>

        <property name="number" column="number" not-null="true" unique="true"/>
        <property name="location" column="location" not-null="true" unique="true"/>

    </class>

</hibernate-mapping>

и .java

public class Table implements Serializable
{
  private Integer id;//panel_facility
  private Integer number;
  private String location;

  public Table()
  {
  }

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

  public Integer getId()
  {
    return id;
  }

  public void setNumber(Integer number)
  {
    this.number = number;
  }

  public Integer number()
  {
    return number;
  }

  public String location()
  {
    return location;  
  }

  public void setLocation(String location)
  {
      this.location = location;
  }

}

Есть предложения?

Редактировать (добавлено сопоставление)

1 Ответ

1 голос
/ 06 мая 2010

Вы должны выбрать идентификатор также во внешнем выборе. (и не использовать конкатенацию строк в вашем запросе)

Используйте что-то подобное, hibernate вставит правильные имена столбцов:

List l = hibernateSession.createSQLQuery("SELECT {t.*} FROM table t
WHERE other_number IN 
(SELECT f.number FROM table2 AS f JOIN table3 AS g on f.number = g.number 
WHERE g.other_number = :var) 
ORDER BY number")
.addEntity("t", Table.class).setParameter("var", actualObject).list();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...