Вот выдержка из моего кода (я использую XDoclet):
/**
* @hibernate.class table="WIP_DISCRETE_JOBS"
*/
public class WipDiscreteJob extends AuditedObject
{
private WipDiscreteJobStatus status;
/**
* @hibernate.many-to-one column="STATUS_TYPE"
*/
public WipDiscreteJobStatus getStatus()
{
return status;
}
}
/**
* @hibernate.class
* table="apps.mfg_lookups"
* where="lookup_type = 'WIP_JOB_STATUS'"
*/
public class WipDiscreteJobStatus extends ManufacturingLookup
{
/**
* @hibernate.id column="LOOKUP_CODE"
* generator-class="assigned"
*/
public Long getId()
{
return this.id;
}
}
А вот некоторые определения базы данных:
APPS.MFG_LOOKUP (view)
Column Name Pk Data Type Null?
LOOKUP_TYPE VARCHAR2 (30 Byte) N
LOOKUP_CODE NUMBER Y
WIP_DISCRETE_JOBS
Column Name Pk Data Type Null?
STATUS_TYPE N NUMBER Yes
Когда я запрашиваю WipDiscreteJob и пытаюсь получить счетчик результатов (с использованием критериев), SQL, отчасти, выглядит как
select count(*) as y0_
from WIP_DISCRETE_JOBS this_
inner join apps.mfg_lookups wipdiscret2_ on this_.STATUS_TYPE=wipdiscret2_.LOOKUP_CODE
inner join WIP_ENTITIES wipentity1_ on this_.WIP_ENTITY_ID=wipentity1_.WIP_ENTITY_ID
inner join WIP_SCHEDULE_GROUPS wipschedul4_ on this_.SCHEDULE_GROUP_ID=wipschedul4_.SCHEDULE_GROUP_ID
inner join INV.MTL_SYSTEM_ITEMS_B item3_ on this_.PRIMARY_ITEM_ID=item3_.INVENTORY_ITEM_ID and this_.ORGANIZATION_ID=item3_.ORGANIZATION_ID
where wipentity1_.WIP_ENTITY_NAME is not null
and wipdiscret2_.LOOKUP_CODE=3
and item3_.PLANNER_CODE='A5'
and wipschedul4_.SCHEDULE_GROUP_NAME='Area 2'
и я получаю ошибку "недопустимый номер" при запуске. Но когда я добавляю предложение "where" из класса ...
select count(*) as y0_
from WIP_DISCRETE_JOBS this_
inner join apps.mfg_lookups wipdiscret2_ on this_.STATUS_TYPE=wipdiscret2_.LOOKUP_CODE AND lookup_type = 'WIP_JOB_STATUS'
inner join WIP_ENTITIES wipentity1_ on this_.WIP_ENTITY_ID=wipentity1_.WIP_ENTITY_ID
inner join WIP_SCHEDULE_GROUPS wipschedul4_ on this_.SCHEDULE_GROUP_ID=wipschedul4_.SCHEDULE_GROUP_ID
inner join INV.MTL_SYSTEM_ITEMS_B item3_ on this_.PRIMARY_ITEM_ID=item3_.INVENTORY_ITEM_ID and this_.ORGANIZATION_ID=item3_.ORGANIZATION_ID
where wipentity1_.WIP_ENTITY_NAME is not null
and wipdiscret2_.LOOKUP_CODE=3
and item3_.PLANNER_CODE='A5'
and wipschedul4_.SCHEDULE_GROUP_NAME='Area 2'
и запустить его вручную, он работает нормально. Это просто ошибка в Hibernate или я что-то упустил? Как заставить Hibernate добавить это предложение "where"?