2013-11-22 2 views
0

Я не очень опытен в Hibernate, и я столкнулся с проблемой имени столбца с недопустимым именем Hibernate довольно давно. Я просто пытаюсь выбрать данные из базы данных, используя критерии API, следующим образом:Hibernate java.sql.SQLException: Недопустимое имя столбца

public Subject lookupByID(SubjectValue subjectValue) { 
    List list; 
    Iterator it; 
    Criteria criteria = getBaseCriteria(); 
    criteria = criteria.add(Restrictions.eq("subjectId", subjectValue.getSubjectId())); 
    list = criteria.list(); 
    it = list.iterator(); 
    if(it.hasNext()){ 
     return (Subject)it.next(); 
    } 
    else{ 
     return null; 
    } 
} 

Я включил режим отладки гибернации, и теперь я могу видеть, что выбор он генерирует:

Hibernate: select this_.Subject_id as Subject1_11_0_, this_.Site_id as Site2_11_0_, this_.Notification_id as Notifica3_11_0_, this_.Name as Name11_0_, this_.Description as Descript5_11_0_, this_.UserName as UserName11_0_, this_.DisplayOrder as DisplayO7_11_0_, this_.InsertDate as InsertDate11_0_, this_.insertedBy_id as insertedBy9_11_0_, this_.UpdateDate as UpdateDate11_0_, this_.updatedBy_id as updatedBy11_11_0_, this_.StatusCode as StatusCode11_0_, this_.Template_id as Template13_11_0_, this_.ForwardMail as Forward14_11_0_, this_.AutoReply as AutoReply11_0_, this_.FromName as FromName11_0_, this_.FromMail as FromMail11_0_, this_.ResponseRequired as Respons18_11_0_ from MYSCHEMA.Subject this_ where this_.Subject_id = ? 

Выполнение этого запроса непосредственно на БД работает отлично, но зимуют это показывает: с

org.hibernate.exception.SQLGrammarException: could not execute query 
Caused by: java.sql.SQLException: Invalid column name 'Template_id'. 

Вот мое отображение XML:

<hibernate-mapping> 
<class name="MYPACKAGE.model.Subject" table="Subject" dynamic-update="true" > 
    <id name="subjectId" type="integer" column="Subject_id"> 
     <generator class="identity" /> 
    </id> 
    <property name="siteId" column="Site_id" type="integer" /> 
    <property name="notificationId" column="Notification_id" type="integer" not-null="false" /> 
    <property name="name" column="Name" type="string" /> 
    <property name="description" column="Description" type="string" /> 
    <property name="userName" column="UserName" type="string" /> 
    <property name="displayOrder" column="DisplayOrder" type="integer" /> 
    <property name="insertDate" column="InsertDate" type="timestamp" /> 
    <property name="insertedBy_id" column="insertedBy_id" type="integer" /> 
    <property name="updateDate" column="UpdateDate" type="timestamp" /> 
    <property name="updatedBy_id" column="updatedBy_id" type="integer" /> 
    <property name="statusCode" column="StatusCode" type="string" /> 
    <property name="templateId" column="Template_id" type="integer" /> 
    <property name="forwardMail" column="ForwardMail" type="string" /> 
    <property name="autoReply" column="AutoReply" type="boolean" /> 
    <property name="fromName" column="FromName" type="string" /> 
    <property name="fromMail" column="FromMail" type="string" /> 
    <property name="responseRequired" column="ResponseRequired" type="boolean" /> 

</class> 

Я бегу на Java 1.5.022, Hibernate 3.26GA и JBOSS 6,0 EAP (Очень похоже на JBOSS AS7). Может ли кто-нибудь помочь? Если вам нужна дополнительная информация, пожалуйста, дайте мне знать, и я с удовольствием предоставил.

Имейте славный день!

EDIT: структура Таблица:

CREATE TABLE [ITrInnoFramework].[Subject](
    [Subject_id] [int] IDENTITY(1,1) NOT NULL, 
    [Site_id] [int] NOT NULL, 
    [Notification_id] [int] NULL, 
    [Name] [nvarchar](50) NOT NULL, 
    [Description] [nvarchar](1000) NOT NULL, 
    [DisplayOrder] [int] NOT NULL, 
    [InsertDate] [datetime] NOT NULL, 
    [InsertedBy_id] [int] NOT NULL, 
    [UpdateDate] [datetime] NOT NULL, 
    [UpdatedBy_id] [int] NOT NULL, 
    [StatusCode] [char](10) NULL, 
    [UserName] [varchar](50) NULL, 
    [Template_id] [int] NULL, 
    [ForwardMail] [varchar](255) NULL, 
    [ResponseRequired] [bit] NULL, 
    [AutoReply] [bit] NULL, 
    [FromName] [varchar](255) NULL, 
    [FromMail] [varchar](255) NULL, 
CONSTRAINT [PK_Subject] PRIMARY KEY CLUSTERED 
(
    [Site_id] ASC, 
    [Name] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY], 
CONSTRAINT [IX_Subject_1] UNIQUE NONCLUSTERED 
(
    [Subject_id] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] 

GO 

SET ANSI_PADDING OFF 
GO 

ALTER TABLE [ITrInnoFramework].[Subject] WITH CHECK ADD CONSTRAINT [FK_Subject_Notification] FOREIGN KEY([Notification_id]) 
REFERENCES [ITrInnoFramework].[Notification] ([Notification_id]) 
GO 

ALTER TABLE [ITrInnoFramework].[Subject] CHECK CONSTRAINT [FK_Subject_Notification] 
GO 

ALTER TABLE [ITrInnoFramework].[Subject] WITH CHECK ADD CONSTRAINT [FK_Subject_SiteInfo] FOREIGN KEY([Site_id]) 
REFERENCES [ITrInnoFramework].[SiteInfo] ([Site_id]) 
GO 

ALTER TABLE [ITrInnoFramework].[Subject] CHECK CONSTRAINT [FK_Subject_SiteInfo] 
GO 

ALTER TABLE [ITrInnoFramework].[Subject] WITH CHECK ADD CONSTRAINT [FK_Subject_StatusLkp] FOREIGN KEY([StatusCode]) 
REFERENCES [ITrInnoFramework].[StatusLkp] ([StatusCode]) 
GO 

ALTER TABLE [ITrInnoFramework].[Subject] CHECK CONSTRAINT [FK_Subject_StatusLkp] 
GO 

ALTER TABLE [ITrInnoFramework].[Subject] WITH CHECK ADD CONSTRAINT [FK_Subject_Template] FOREIGN KEY([Template_id]) 
REFERENCES [ITrInnoFramework].[Template] ([Template_id]) 
GO 

ALTER TABLE [ITrInnoFramework].[Subject] CHECK CONSTRAINT [FK_Subject_Template] 
GO 

ALTER TABLE [ITrInnoFramework].[Subject] ADD CONSTRAINT [DF_Subject_InsertDate] DEFAULT (getdate()) FOR [InsertDate] 
GO 

ALTER TABLE [ITrInnoFramework].[Subject] ADD CONSTRAINT [DF_Subject_InsertedBy_id] DEFAULT ((-1)) FOR [InsertedBy_id] 
GO 

ALTER TABLE [ITrInnoFramework].[Subject] ADD CONSTRAINT [DF_Subject_UpdateDate] DEFAULT (getdate()) FOR [UpdateDate] 
GO 

ALTER TABLE [ITrInnoFramework].[Subject] ADD CONSTRAINT [DF_Subject_UpdatedBy_id] DEFAULT ((-1)) FOR [UpdatedBy_id] 
GO 
+0

Как вы создали таблицу? Вручную или спящий режим? – SAP

+0

Таблица была создана вручную, это приложение, которое я разрабатываю, основано на существующей таблице. – user3022964

+0

Можете ли вы поделиться своей структурой таблиц здесь? – BDR

ответ

1

Благодарим вас за помощь, но я закончил отказ от версии спящего режима до версии 4.0.1. Это решило мою проблему!

0

Может ли это быть проблема?

this_.Template_id as Template13_11_0_ 

Template_id усекается до шаблона, шаблон является ключевым словом SQL. Попробуйте изменить столбец Template_id на templateId.

+0

Спасибо за ваш ответ gebuh buy Я закончил отказ и изменение версии Hibernate, чтобы решить эту проблему. У меня не было возможности проверить ваш подход, на самом деле я не думаю, что смогу, потому что у меня нет собственной БД. Спасибо, в любом случае! – user3022964

Смежные вопросы