Hibernate java.sql.SQLException:无效的列名

用户名

我对Hibernate的使用经验不是很丰富,并且在很长一段时间内都面临着Hibernate的无效列名问题。我只是想使用Criteria API从数据库中选择数据,如下所示:

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调试模式,现在可以看到它生成的选择:

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)上运行。谁能帮忙吗?如果您需要更多详细信息,请告诉我,我们将竭诚为您提供。

祝你今天过得愉快!

编辑:表结构:

 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
用户名

感谢您的帮助,但我最终放弃了,将休眠版本更改为4.0.1。这解决了我的问题!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

值java.sql.SQLException:无效的列名

Spring Hibernate java.sql.SQLException:结果集已关闭

java.sql.SQLException无效的对象名称

java.sql.SQLException:调用中的无效参数:getBytes()

错误:java.sql.SqlException:无效的列类型

日期格式错误java.sql.SQLException:无效的列类型

原因:java.sql.SQLException:无效的列索引

java.sql.SQLException:GET请求中getLong()的值无效

通过Java执行SQL查询时,获取错误为“ java.sql.SQLException:无效的列索引”

Java Hibernate无效映射异常

Java java.sql.SQLException:准备语句上的无效列索引

Java / MSSQL:java.sql.SQLException无效的对象名称'TableName'

PreparedStatementCallback;SQL[SQLStatememnt] 的无效结果集访问;嵌套异常是java.sql.SQLException:无效的列索引Spring Auth

pyodbc sql - 无效的列名

SQL查询-无效的列名

由以下原因引起:java.sql.SQLException:在SET子句中多次指定了列名。

从Hibernate获取动态SQL列名称

如何从 MyBatis 获取 Map<String, Integer> ?原因:java.sql.SQLException:getInt() 的值无效 - 'NONE'

java.sql.SQLException:ORA-01017:无效的用户名/密码;登录被拒绝

java.sql.SQLException:从 jdbc 执行包级别类型的过程时列类型无效

java.sql.SQLException:ORA-22275:指定的LOB定位器无效

ResultSet.get引发java.sql.SQLException:当前光标位置的无效操作

我收到java.sql.sqlexception:使用CallableStatement的无效列索引错误

Hibernate使用MySQL生成无效的SQL查询

java.sql.SQLException:ORA-01843:无效的月份(在SQL DEVELOPER中工作,在JAVA中不工作)

Hibernate和JPA项目:无效的列名错误

SQL 状态 [99999];错误代码 [17004]; 列类型无效;嵌套异常是 java.sql.SQLException: Invalid column type

无法获得,因为SQL错误java.sql.SQLException中的从我的表中的数据:无效值getInt()?

SQL Server:无效的列名称