SSH异常解决

SSH异常整理
一、org.hibernate.lazyinitialzationException:failed to lazily initialize a collection of role:com.xxx.spring.Customer.linkMans could not initialize proxy -no session

延迟初始化加载异常:
错误原因一般有两个:
1.使用hibernate查询时调用了load方法
2.查询某个对象的关联对象的时候。
解决方式:
1.使用get方法(不推荐使用该方式解决该问题,没有延迟加载效果)
2. 在web.xml文件中 解决延迟加载问题的过滤器,加载struts核心过滤器前面

  <filter>
    <filter-name>OpenSessionInViewFilter</filter-name>
    <filter-class>org.springframework.orm.hibernate5.support.OpenSessionInViewFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>OpenSessionInViewFilter</filter-name>
    <url-pattern>*.action</url-pattern>
  </filter-mapping>

二、org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘transactionManager’ defined in class path resource [applicationContext.xml]: Initialization of bean failed; nested exception is org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type [java.lang.String] to required type [org.hibernate.SessionFactory] for property ‘sessionFactory’; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [org.hibernate.SessionFactory] for property ‘sessionFactory’: no matching editors or conversion strategy found
at
创建实体异常:
我出现该问题的原因是在配置事务管理器的时候,将property属性的写成了<property name="sessionFactory" value="sessionFactory"></property>,这里要是一个ref(外部连接对象),将value改成ref就没问题了。

三、PropertyNotFoundException:属性找不到异常
Caused by: org.hibernate.PropertyNotFoundException: Could not locate getter method for property [com.xxx.spring.domain.Customer#linkmans]
at org.hibernate.internal.util.ReflectHelper.findGetterMethod(ReflectHelper.java:400)
原因:实体类中的名称大小写不一致

四、QueryParameterException:查询参数异常
org.hibernate.QueryParameterException: Position beyond number of declared ordinal parameters. Remember that ordinal parameters are 1-based! Position: 2
解决方式:记住Hibernate的SQL—-索引的参数值是从0开始的。
五、GenericJDBCException:通用JDBC异常
org.hibernate.exception.GenericJDBCException: could not execute statement
Caused by: java.sql.SQLException: Field ‘gid’ doesn’t have a default value
原因:外键gid没有默认值,可能在设置主键生成策略没有对应实体类的数据类型
解决方法:如果数据库表中数据类型为Integer,可设置为主键生成策略为increment、native、assign、identity
六、IdentifierGenerationException:标识符产生异常:
org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save(): com.xxx.domain.Customer
解决方式:主键id一定需要手动设置(可能在映射文件忘记写主键生成策略)

<!-- 主键生成策略 --> <generator class="native"/>

七、ConstraintViolationException:约束违背异常
org.hibernate.exception.ConstraintViolationException: could not execute statement
造成原因:主键冲突,主键已经存在。
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry ‘2-1’ for key ‘PRIMARY’
解决方法:多对多级联查询,没有释放外键维护权 在对应的映射文件里添加 inverse属性为ture

<set name="linkMans" cascade="save-update,delete" inverse="true">
            <!-- 多的一方的外键 -->
            <key column="lkm_cust_id"/>
            <!-- 多的一方的类名全路径 -->
            <one-to-many class="com.xxx.domain.LinkMan"/>
        </set>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值