今天做了ssh功能测试,结果出现了一个奇怪的错误。
代码如下:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("/applicationContext.xml")
public class UserTest {
@Resource
private CategoryDaoImpl categoryDao;
@Resource
private CategorySecondDaoImpl categorySecondDao;
@Test
public void test() {
// System.out.println(categoryDao.findCategoryByCid(1)); // 不报错
System.out.println(categorySecondDao.findCategorySecondByCsid(2)); // 报错
}
}
关键错误如下:
ERROR org.hibernate.proxy.pojo.javassist.JavassistProxyFactory - HHH000142: Javassist Enhancement failed: com.cbl.shop.category.bean.Category
java.lang.ClassCastException: com.cbl.shop.category.bean.Category_$$_javassist_1 cannot be cast to javassist.util.proxy.Proxy
令我感到不可思议的是,为什么第一个输出不报错,第二个就报错呢?百思不得其解,后来在stackoverflow找到解决方法,只需将CategorySecond中的many-to-one映射中的lazy改成false,原因尚且不明,先记录下再说。
<many-to-one name="category" lazy="false" column="cid" class="com.cbl.shop.category.bean.Category"></many-to-one>