启动应用程序时出现此错误
Caused by: org.dbunit.dataset.NoSuchColumnException: CLIENT.ID - (Non-uppercase input column: ID) in ColumnNameToIndexes cache map. Note that the map's column names are NOT case sensitive
我不太清楚为什么我得到这个,因为我的表/列名称全部以大写字母引用(即使消息坚持这不应该是一个问题)
我的表:
mysql> describe CLIENT;
+------------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------------+--------------+------+-----+---------+----------------+
| ID | int(11) | NO | PRI | NULL | auto_increment |
| jdoDetachedState | tinyblob | YES | | NULL | |
| NAME | varchar(255) | NO | | NULL | |
| ADDRESS1 | varchar(255) | YES | | NULL | |
| ADDRESS2 | varchar(255) | YES | | NULL | |
| COUNTRY | varchar(255) | YES | | NULL | |
| COUNTY | varchar(255) | YES | | NULL | |
| MAINPHONENUMBER | varchar(255) | YES | | NULL | |
| POSTCODE | varchar(255) | YES | | NULL | |
| SECTOR | varchar(255) | YES | | NULL | |
| TOWN | varchar(255) | YES | | NULL | |
| WEBSITEURL | varchar(255) | YES | | NULL | |
+------------------+--------------+------+-----+---------+----------------+
12 rows in set (0.00 sec)
mysql>
我的域名实体的片段:
@Id
@GeneratedValue
@Column(name="ID")
private Integer id;
测试日期的片段我正在尝试强制使用DBUnit:
<dataset>
<CLIENT ID="-1"
ADDRESS1="Endeavour House"
ADDRESS2="Russell Rd"
COUNTRY="England"
COUNTY="Suffolk"
MAINPHONENUMBER="0845 606 6067"
NAME="Suffolk County Council"
POSTCODE="IP1 2BX"
SECTOR="Local Government"
TOWN="Ipswich"
WEBSITEURL="www.suffolk.gov.uk"/>
</dataset>
我想不出别的什么可以尝试,删除表并重新编译java代码,任何想法?
答案 0 :(得分:2)
您是不是要尝试将已设置ID的数据库客户端放入? ID列是只读的,只有数据库可以“写”到它。
答案 1 :(得分:2)
在我的一个实体中添加一列(使用内存中的HSQL数据库)后,我也遇到了这个问题。
我设法通过简单地删除以前生成的临时文件来解决这个问题:mem:testdb.log,mem:testdb.properties和mem:testdb.script
为什么会出现此错误? =&GT;数据库模式存储在mem:testdb.script文件中,并且在修改实体时不会重新生成。
答案 2 :(得分:2)
我已通过将提到的列添加到我的实体来修复错误。
答案 3 :(得分:1)
我遇到了同样的错误,幸运的是我们之前已经编写了一些其他测试,发现在大多数教程中,编写xml的方式的格式是FlatXMLDataSet,如果你使用的是XML数据集那么正确的版本是如下,请查看底部的链接以获取更多信息。
它应该采用以下格式。
<?xml version="1.0" encoding="UTF-8"?>
<dataset>
<table>
<column>id</column>
<column>name</column>
<column>department</column>
<column>startDate</column>
<column>endDate</column>
<row>
<value>999</value>
<value>TEMP</value>
<value>TEMP DEPT</value>
<value>2113-10-13</value>
<value>2123-10-13</value>
</row>
</table>
</dataset>
有关更多信息,请访问此链接。
http://dbunit.sourceforge.net/components.html#FlatXmlDataSet
我在另一个项目中再次遇到这个错误,我们有一个模型类的层次结构,一些hibernate如何用于创建一个包含7列的表Role但是在使用DBUnit运行它时它无法创建列(仅限5个因为它抛出了这个错误,解决方案:手动创建了这个表和另外3个不是由hibernate创建的关系表。
答案 4 :(得分:0)
如果你使用format = flat
,这个错误就会消失了mysql和hsql