Java sql查询结果中的字符数

Java sql查询结果中的字符数,java,sql,spring,Java,Sql,Spring,我将Spring3.1.1与Hibernate4和MSSQL数据库一起使用。最后,我能够使用表中返回正确答案的连接查询数据库。尽管如此,它似乎并没有返回我的消息的全部字符串,而是以29/30的数字剪切。我的问题是: SQLQuery sql = this.getCurrentSession().createSQLQuery( "SELECT event.id as eventid, CAST(event_type.type_name AS varchar) as even

我将Spring3.1.1与Hibernate4和MSSQL数据库一起使用。最后,我能够使用表中返回正确答案的连接查询数据库。尽管如此,它似乎并没有返回我的消息的全部字符串,而是以29/30的数字剪切。我的问题是:

SQLQuery sql = this.getCurrentSession().createSQLQuery(
            "SELECT event.id as eventid, CAST(event_type.type_name AS varchar) as eventtype, event.check_date, event.event_date, event.status, CAST(event_message.message AS varchar) as eventmessage " + 
            "FROM event_log event " +
            "LEFT JOIN event_type " + 
            "ON (event.event_type_id = event_type.id) " + 
            "LEFT JOIN event_message " +
            "ON (event.event_message_id = event_message.id) " + 
            "WHERE event.event_type_id = " + jobId + 
            "ORDER BY eventid");
结果可能是:

4506 Database 2014-01-15 14:14:15.02 2014-01-15 14:14:15.02 false Database-connection cannot be
其中列为id、任务名称、检查日期、事件日期、状态和结尾的消息字符串

结果进入
ArrayList
,在那里我读取
行[0]
等以获取行中的实体。字符串消息在29位之后被截断,这令人不安。为什么它会割断绳子?我如何修复它?在我的数据库中,该字符串已满,并被命名为最多400个字符


我知道这可能不是查询我的数据库的最佳方式,但它可以用于我的应用程序,因为它可以工作

您使用的是无长度的
varchar
。永远不要这样做

替换:

CAST(event_type.type_name AS varchar)
比如:

CAST(event_type.type_name AS varchar(255))
在某些上下文中,默认长度为32。在某些情况下是1。但是,一般情况下,请始终指定长度

编辑:


实际上,您甚至可能不需要
演员阵容
。为什么不让
事件类型。在
选择列表中键入\u name

谢谢你,成功了!我需要强制转换,因为如果我没有,我会得到“org.hibernate.MappingException:No方言映射用于JDBC类型:-9”。另一种方法是使用addScalar,但我没有尝试过,cast是我最初找到的答案。如果我能对你的答案投赞成票,我会的。