Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 生成文件中的MyBatis异常_Java_Generator_Mybatis - Fatal编程技术网

Java 生成文件中的MyBatis异常

Java 生成文件中的MyBatis异常,java,generator,mybatis,Java,Generator,Mybatis,我使用MyBatis Generator 1.3.1创建了一个Mapper.xml文件。MyBatis解析映射程序文件时,会引发BuilderException: Exception in thread "main" org.apache.ibatis.builder.BuilderException: Unknown element <#comment> in SQL statement. at org.apache.ibatis.builder.xml.XMLStatem

我使用MyBatis Generator 1.3.1创建了一个Mapper.xml文件。MyBatis解析映射程序文件时,会引发BuilderException:

Exception in thread "main" org.apache.ibatis.builder.BuilderException: Unknown element <#comment> in SQL statement.
    at org.apache.ibatis.builder.xml.XMLStatementBuilder.parseDynamicTags(XMLStatementBuilder.java:83)
    at org.apache.ibatis.builder.xml.XMLStatementBuilder.parseStatementNode(XMLStatementBuilder.java:43)
    at org.apache.ibatis.session.Configuration.parseStatementNodes(Configuration.java:513)
    at org.apache.ibatis.session.Configuration.buildStatementsForNamespace(Configuration.java:502)
    at org.apache.ibatis.session.Configuration.buildStatementsFromId(Configuration.java:467)
    at org.apache.ibatis.session.Configuration.getMappedStatement(Configuration.java:391)
    at org.apache.ibatis.binding.MapperMethod.setupCommandType(MapperMethod.java:160)
    at org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:48)
    at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:37)
    at $Proxy1.selectByExample(Unknown Source)
parseDynamicTags无法识别该字段。它正在解析的XML部分是selectByExample:

  <select id="selectByExample" resultMap="BaseResultMap" parameterType="test.model.TblPosStageExample" >
    <!--       WARNING - @mbggenerated  ..  -->
    select
    <if test="distinct" >
      distinct
    </if>
    <include refid="Base_Column_List" />
    from tbl_Pos_Stage
    <if test="_parameter != null" >
      <include refid="Example_Where_Clause" />
    </if>
    <if test="orderByClause != null" >
      order by ${orderByClause}
    </if>
  </select>
MyBatis似乎已经解析了第一条注释和select语句。它刚刚解析了text类型的节点,但我不确定注释来自何处

我还没有修改生成的文件,我感到困惑的是,它在过去是否正常工作,并突然停止

编辑:基本列列表

  <sql id="Base_Column_List" >
    <!--
      WARNING - @mbggenerated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Wed Mar 23 08:04:42 EST 2011.
    -->
    SurrogatePK, businessDate, positionId, busAIdCode, {95 columns deleted for brevity}
    marketValueCcy, settledMarketValueCcy
  </sql>
下面是示例_where _子句

<sql id="Example_Where_Clause" >
  <!--
    WARNING - @mbggenerated
    This element is automatically generated by MyBatis Generator, do not modify.
    This element was generated on Wed Mar 23 08:04:42 EST 2011.
  -->
  <where >
    <foreach collection="oredCriteria" item="criteria" separator="or" >
    <if test="criteria.valid" >
      <trim prefix="(" suffix=")" prefixOverrides="and" >
      <foreach collection="criteria.criteria" item="criterion" >
        <choose >
        <when test="criterion.noValue" >
          and ${criterion.condition}
        </when>
        <when test="criterion.singleValue" >
          and ${criterion.condition} #{criterion.value}
        </when>
        <when test="criterion.betweenValue" >
          and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
        </when>
        <when test="criterion.listValue" >
          and ${criterion.condition}
          <foreach collection="criterion.value" item="listItem" open="(" close=")" separator="," >
          #{listItem}
          </foreach>
        </when>
        </choose>
      </foreach>
      </trim>
    </if>
    </foreach>
  </where>
</sql>

我已经找出了这个问题的原因。这与myBatis的生成过程无关

当我向Eclipse构建路径中添加一个实用程序包时,出现了这个问题,其中包括一个第三方库,其中包含许多旧的包。我怀疑有问题的包是一个旧的org.apache.xerces.parsers

我通过从头开始构建Eclipse项目并添加包和代码(一次一个)发现了错误


SQL语句中的运行时错误未知元素可以通过添加项目来复制,并通过从生成路径中删除项目来消除。

我遇到了由非标准XML解析器引起的相同问题,我无法替换它。 我在上打开了一个问题,并附加了一个补丁。希望这将很快得到解决


编辑:问题已在r5388中得到解决。

能否提供基本列列表和示例Where子句引用的xml?错误可能来自其中一个。@Clair,好的,我编辑了问题并添加了这些。对不起,没有什么突出的地方我建议修改查询以隔离哪里有问题,但您可能已经尝试过了。