【问题标题】:Error to retrieve data检索数据时出错
【发布时间】:2016-08-16 13:20:32
【问题描述】:

我的桌子:

CREATE TABLE [dbo].[R_ACADEMIE](
    [ID_ACADEMIE] [dbo].[IDENTIFIANT] NOT NULL,
    [LC_ACADEMIE_CODE] [dbo].[LIBELLE_COURT] NOT NULL,
    [LM_ACADEMIE_LIBELLE] [dbo].[LIBELLE_MOYEN] NOT NULL
) ON [PRIMARY]

我的结果图:

<resultMap class="business.bo.AcademieBO"
    id="AcademieBOResult">
    <result column="ID_ACADEMIE" jdbcType="NUMERIC"
        property="idAcademie" />
    <result column="LC_ACADEMIE_CODE" jdbcType="VARCHAR"
        property="lcAcademieCode" />
    <result column="LM_ACADEMIE_LIBELLE" jdbcType="VARCHAR"
        property="lmAcademieLibelle" />
</resultMap>

AcademiBO.java:

import java.io.Serializable;
import java.math.BigDecimal;

public class AcademieBO implements Serializable{

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    /**
     * <code>idCivilite</code> the idCivilite
     */
    private BigDecimal idAcademie;

    /**
     * <code>lcCivCode</code> the lcCivCode
     */
    private String lcAcademieCode;

    /**
     * <code>lmCivLibelle</code> the lmCivLibelle
     */
    private String lmAcademieLibelle;

    public BigDecimal getIdAcademie() {
        return idAcademie;
    }

    public void setIdAcademie(BigDecimal idAcademie) {
        this.idAcademie = idAcademie;
    }

    public String getLcAcademieCode() {
        return lcAcademieCode;
    }

    public void setLcAcademieCode(String lcAcademieCode) {
        this.lcAcademieCode = lcAcademieCode;
    }

    public String getLmAcademieLibelle() {
        return lmAcademieLibelle;
    }

    public void setLmAcademieLibelle(String lmAcademieLibelle) {
        this.lmAcademieLibelle = lmAcademieLibelle;
    }


}

dbo_ACADEMIE_SqlMap.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="dbo_ACADEMIE">
    <resultMap class="business.bo.AcademieBO"
        id="AcademieBOResult">
        <result column="ID_ACADEMIE" jdbcType="NUMERIC" property="idAcademie" />
        <result column="LC_ACADEMIE_CODE" jdbcType="VARCHAR" property="lcAcademieCode" />
        <result column="LM_ACADEMIE_LIBELLE" jdbcType="VARCHAR"
            property="lmAcademieLibelle" />
    </resultMap>

    <select id="listAll" resultMap="AcademieBOResult">
        select * from dbo.R_ACADEMIE
        ORDER BY ID_ACADEMIE ASC
    </select>

    <select id="selectByIdCivilite" resultMap="AcademieBOResult">
        select * from dbo.R_ACADEMIE where ID_ACADEMIE = #idAcademie:INTEGER#
    </select>
</sqlMap>

错误:

SqlMapClient 操作; SQL [] 的未分类 SQLException;
SQL 状态 [null];
错误代码 [0];
错误发生在
dao/maps/dbo_ACADEMIE_SqlMap.xml.
应用结果映射时出错。
检查 dbo_ACADEMIE.AcademieBOResult。 检查“idAcademie”属性的结果映射。
原因:com.ibatis.sqlmap.client.SqlMapException:获取嵌套结果时出错 “学院”的映射值。
原因:java.sql.SQLException: Invalid column name ID_ACADEMIE.;
嵌套异常是 com.ibatis.common.jdbc.exception.NestedSQLException:
dao/maps/dbo_ACADEMIE_SqlMap.xml 中出现错误。
应用结果映射时出错。
检查 dbo_ACADEMIE.AcademieBOResult。
检查“idAcademie”属性的结果映射。
原因:com.ibatis.sqlmap.client.SqlMapException:获取“academie”的嵌套结果映射值时出错。
原因:java.sql.SQLException:列名 ID_ACADEMIE 无效。

【问题讨论】:

  • 你能展示一下 AcademieBO 吗?
  • @davidhxxx 我更新我的帖子
  • 错误是指academie 的值映射。你能提供更多关于dbo_ACADEMIE_SqlMap.xml的信息吗?
  • @davidhxxx 我已经发布了我的dbo_ACADEMIE_SqlMap‌​.xml
  • 两个 select 语句都会产生这个错误,还是当您删除两个语句之一时它会消失?

标签: java sql-server ibatis


【解决方案1】:

您不能在 iBatis 中使用 select *,您需要给出所有列名,以便 iBatis 能够将正确的列映射到正确的对象属性。

   <select id="listAll" resultMap="AcademieBOResult">
        select ID_ACADEMIE, LC_ACADEMIE_CODE, LM_ACADEMIE_LIBELLE from dbo.R_ACADEMIE
        ORDER BY ID_ACADEMIE ASC
    </select>

还要在单独的工具 (SQL Developer) 中仔细检查您的 SQL 请求,以确保其正常工作。我不太了解您的创建表脚本:我不熟悉 SQL Server,您重新定义列名的方式以及没有列类型的事实对我来说似乎很奇怪,也许问题出在此处...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-19
    • 2016-09-08
    • 1970-01-01
    相关资源
    最近更新 更多