Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'c.type' in 'field

Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'c.type' in 'field list'

Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column ‘c.type’ in ‘field list’

这是我XML文件里面的代码:

	<sql id="companyColumns">
		a.id AS "id",
		a.name AS "name",
		a.address AS "address",
		a.number AS "number",
		c.type AS "type",
		a.begindate AS "begindate",
		a.remarks AS "remarks"
	</sql>
    
	<select id="get" resultType="Company">
		SELECT 
			<include refid="companyColumns"/>
		FROM company a,companytype c
		<include refid="companyJoins"/>
		WHERE a.id = #{id} AND a.typeid = c.typeid
	</select>

报错信息如下:

 Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'c.type' in 'field list'
; bad SQL grammar []; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'c.type' in 'field list'
	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:231)
	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:73)
	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:74)
	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:399)
	at com.sun.proxy.$Proxy28.selectList(Unknown Source)
	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:205)
	at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:119)
	at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:63)
	at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:52)
	at com.sun.proxy.$Proxy62.findList(Unknown Source)

解决方法

首先重新编写了SQL语句,使用了refid

	<sql id="companyColumns">
		a.id AS "id",
		a.name AS "name",
		a.address AS "address",
		a.number AS "number",
		c.type AS "type",
		a.begindate AS "begindate",
		a.remarks AS "remarks"
	</sql>
	
	<sql id="companyJoins">
		LEFT JOIN companytype c ON a.typeid = c.typeid
	</sql>
    
	<select id="get" resultType="Company">
		SELECT 
			<include refid="companyColumns"/>
		FROM company a 
		<include refid="companyJoins"/>
		WHERE a.id = #{id}
	</select>
	
	<select id="findList" resultType="Company">
		SELECT 
			<include refid="companyColumns"/>
		FROM company a
		<include refid="companyJoins"/>
		<where>
			<if test="name != null and name != ''">
				AND a.name LIKE 
					<if test="dbName == 'oracle'">'%'||#{name}||'%'</if>
					<if test="dbName == 'mssql'">'%'+#{name}+'%'</if>
					<if test="dbName == 'mysql'">concat('%',#{name},'%')</if>
			</if>
		</where>
		<choose>
			<when test="page !=null and page.orderBy != null and page.orderBy != ''">
				ORDER BY ${page.orderBy}
			</when>
			<otherwise>
			</otherwise>
		</choose>
	</select>

接着在对应实体类中添加了属性typeid(SQL中所有属性都在实体类中进行了定义)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用中的描述,"com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction" 是一个错误的原因。这个错误通常发生在MySQL数据库中,当一个事务等待锁的超时时间超过了设定的限制时发生。为了解决这个问题,可以尝试重新启动事务,或者增加等待锁的超时时间。 根据引用中提到的方法,可以使用Navicat或者直接使用命令连接到数据库,然后运行"show PROCESSLIST"命令来查看是否有锁表的情况。这将显示当前正在执行的所有查询和其状态。通过分析这些信息,可以确定哪个查询正在持有锁并可能导致超时。 另外,在引用中提到了一些关于系统信息收集的变化,这可能会对问题的解决有所帮助。可以尝试更改系统的一些设置,例如增加系统的硬盘和CD/DVD测试的超时时间,以及处理视频播放时可能出现的错误报告。 综上所述,解决"com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction"错误的方法包括重新启动事务、增加等待锁的超时时间、检查是否有锁表的情况,并根据具体情况进行调整系统设置。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [解决生产异常 Cause com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException Lock wait timeout ...](https://blog.csdn.net/zhiyikeji/article/details/124766592)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [BURNINTEST--硬件检测工具](https://download.csdn.net/download/emotion0501/8689891)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值