最近在项目开发中突然遇到一个之前没有遇到的问题identifier of an instance of com.gov.share.Item was altered from 12 to 23的错误,debug调试也没有找到对应的id,之后网上搜索了一下基本上都是说是hibernate实体定义的类型与数据库定义的类型不一致导致的, 我检查了我代码与数据库,类型一致,最后检查代码,发现是对象定义时之后由于使用快捷键没仔细看导致的:
例如商品中有商品详情 商品类:Goods 详情 GoodsItem
错误写法:
Goods good = new Goods();
good.setId("1234");
good.setNo("G23532");
good.setName("商品");
GoodItem item = new GoodItem();
List<GoodItem> itemList = new ArrayList<GoodItem>();//项目中实际为传过来的
for(GoodItem item : itemList) {
item.setId("2354");
item.setPrice(125);
item.setNo("323253");
}
之后保存数据库就会出现错误
其中正确的写法是
Goods good = new Goods(); good.setId("1234"); good.setNo("G23532"); good.setName("商品"); GoodItem item ; List<GoodItem> itemList = new ArrayList<GoodItem>();//项目中实际为传过来的 for(GoodItem item : itemList) { item = new GoodItem();
item.setId("2354"); item.setPrice(125); item.setNo("323253"); }
原因很简单,创建一个对象了重复赋值导致的,这种问题很容易在代码修改的时候使用复制粘贴的方式不检查导致的。
java学习交流群:513650703