Используя коллекцию в mybatis, может ли она использовать статистическую функцию? - PullRequest
0 голосов
/ 14 января 2020

Я играю с mybatis и использую следующий код. Интересно, могу ли я посчитать, сколько записей в booking_records , используя функцию агрегирования. Я пробовал группы, но это не удается. Или мне нужно разделить его на 2 SQL запросов? Заранее спасибо.

Ниже мой код.

<resultMap id="BaseResultMap" type="Hotel">
        <id property="id" column="id"/>
        <result property="chiName" column="chiName"/>
        <result property="engName" column="engName"/>
        <result property="telephone" column="telephone"/>

        <collection property="classes" column="id" ofType="Class" javaType="List">
            <result property="id" column="id"/>
            <result property="hotelId" column="hotelId"/>
            <result property="className" column="className"/>
            <result property="isActivate" column="isActivate"/>
            <result property="totalRoom" column="totalRoom"/>
            <result property="availableRoom" column="availableRoom"/>

            <collection property="bookingRecords" column="id" ofType="BookingRecord" javaType="List">
                <result property="id" column="id"/>
                <result property="userId" column="userId"/>
                <result property="classId" column="classId"/>
                <result property="date" column="date"/>
                <result property="isActivate" column="isActivate"/>
            </collection>
        </collection>
    </resultMap>


    <select id="filterHotel" resultMap="BaseResultMap">
        SELECT hotels.*, classes.*, COUNT(booking_records.*) FROM hotels
        LEFT JOIN classes ON (classes.hotelId = hotels.id)
        LEFT JOIN booking_records ON (classes.id = booking_records.classId)
        WHERE booking_records.date BETWEEN #{startDate} AND #{endDate}
        GROUP BY booking_records.classId
    </select>

Ошибка следующая

Error querying database.  
Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version 
for the right syntax to use near '*) FROM hotels\n LEFT JOIN classes ON (classes.hotelId = hotels.id)\n  
...