2014-05-25 3 views
0

У меня есть таблицаспящий режим нагрузки же строки

canvastowidgets 
{ 
    idCanvas int PK 
    idWidgets int PK 
    version varchar 
    sequence int 
    position int 
    inPanelOrNot int 
} 

и отображение XML, как показано ниже

<hibernate-mapping> 
    <class name="com.config.canvas.CanvasHasWidget" table="canvastowidgets"> 
     <id name="canvasId" type="int"> 
      <column name="idCanvas" /> 
      <generator class="assigned" /> 
     </id> 
     <property name="widgetId" type="int"> 
      <column name="idWidgets" /> 
     </property> 
     <property name="sequence" type="int"> 
      <column name="sequence" /> 
     </property> 
     <property name="position" type="int"> 
      <column name="position" /> 
     </property> 
     <property name="inPanel" type="boolean"> 
      <column name="inPanelOrNot" /> 
     </property> 
    </class> 
</hibernate-mapping> 

Когда я выполнить запрос, как показано ниже

Query query = session.createQuery("from CanvasHasWidget where idCanvas = :id"); 
     query.setParameter("id",canvas.getCanvasId()); 
     return query.list(); 

запроса

select canvashasw0_.idCanvas as idCanvas1_2_, canvashasw0_.idWidgets as idWidget2_2_, canvashasw0_.sequence as sequence3_2_, canvashasw0_.position as position4_2_, canvashasw0_.inPanelOrNot as inPanelO5_2_ from canvastowidgets canvashasw0_ where idCanvas=? 

07: 38: 16822 TRACE BasicBinder: 81 - параметр связывания [1], как [INTEGER] - [1]
07: 38: 16829 TRACE BasicExtractor: 78 - экстрагируют значение ([idCanvas1_2_]: [INTEGER]) - [1] 07: 38: 16,835 TRACE BasicExtractor: 78 - извлеченное значение ([idCanvas1_2_]: [INTEGER]) - [1] 07: 38: 16,840 TRACE BasicExtractor: 78 - извлеченное значение ([idCanvas1_2_]: [INTEGER ]) - [1]

Список возвращает 3 строки, в которых у меня есть 3 строки в таблице. но все три строки, которые вернулись, одинаковы.

+0

Что происходит, когда вы запускаете запрос непосредственно в базе данных? выберите canvashasw0_.idCanvas как idCanvas1_2_, canvashasw0_.idWidgets как idWidget2_2_, canvashasw0_.sequence как sequence3_2_, canvashasw0_.position как position4_2_, canvashasw0_.inPanelOrNot как inPanelO5_2_ из canvastowidgets canvashasw0_, где idCanvas =? – Kalyan

+0

PK вашей таблицы является двойным (idCanvas, idWidgets), пока вы отображаете только один из них. Вот что может вызвать проблему. –

+0

@Javakid он возвращает 3 разных строки не одинаковые – chiranjeevigk

ответ

1

Проблема заключается в том, что ваша таблица имеет составной первичный ключ следующим образом:

idCanvas int PK 
idWidgets int PK 

но только отображается один из них. Измените свое сопоставление и замените раздел id на

<composite-id> 
    <key-property name="idCanvas"/> 
    <key-property name="idWidgets"/> 
</composite-id> 
Смежные вопросы