Форум программистов, компьютерный форум CyberForum.ru

MyBatis не хочет мапить вложенные друг в друга модели (relationship mapping) - Java EE

Восстановить пароль Регистрация
 
drmind
0 / 0 / 0
Регистрация: 19.07.2015
Сообщений: 65
03.01.2017, 13:47     MyBatis не хочет мапить вложенные друг в друга модели (relationship mapping) #1
Всем привет!
Есть класс User, у него есть несколько полей и одно из полей private List<Car> carList. В классе Car тоже несколько полей, и среди них есть поле private Insurance insurancе. И вот insurance как раз не мапится. Первый уровень вложенности мапится нормально, а второй и далее не мапится вообще. Что я делаю не так?

Написал вот такой маппер:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace = "UserNamespace">
    <resultMap id="resultUser" type="User">
        <id property="id" column="id"/>
        <result property="name" column="name"/>
        <association property="tariff" column="tariff" select="getTariff" javaType="Tariff"/>
        <collection property="carList" column="id" select="getCars" javaType="ArrayList" ofType="Car">
            <id property="id" column="id"/>
            <result property="model" column="model"/>
            <association property="insurance" column="insurance" select="getInsurance" javaType="Insurance"/>
        </collection>
    </resultMap>
    
    <select id = "getAll" resultMap = "resultUser">
        SELECT * FROM carwashservice.users
    </select>
 
    <select id = "getTariff" parameterType="int" resultType="Tariff">
        SELECT tariffs.description FROM carwashservice.tariffs WHERE tariffs.id = #{id}
    </select>
 
    <select id = "getCars" parameterType="int" resultType="Car">
        SELECT * FROM carwashservice.cars WHERE cars.user = #{id}
    </select>
    
    <select id = "getInsurance" parameterType="int" resultType="Insurance">
        SELECT * FROM carwashservice.insurance WHERE insurance.id = #{insurance}
    </select>
</mapper>
База:
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
CREATE DATABASE  IF NOT EXISTS `carwashservice` /*!40100 DEFAULT CHARACTER SET latin1 */;
USE `carwashservice`;
 
DROP TABLE IF EXISTS `cars`;
CREATE TABLE `cars` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `model` VARCHAR(45) NOT NULL,
  `user` INT(11) DEFAULT NULL,
  `insurance` INT(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `user_idx` (`user`),
  KEY `insurance_idx` (`insurance`),
  CONSTRAINT `user` FOREIGN KEY (`user`) REFERENCES `users` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1;
 
DROP TABLE IF EXISTS `insurance`;
CREATE TABLE `insurance` (
  `id` INT(11) NOT NULL,
  `cost` VARCHAR(45) NOT NULL,
  `exp_date` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`id`),
  CONSTRAINT `id` FOREIGN KEY (`id`) REFERENCES `cars` (`insurance`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
 
DROP TABLE IF EXISTS `tariffs`;
CREATE TABLE `tariffs` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `description` VARCHAR(45) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `id` (`id`,`description`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1;
 
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
  `id` INT(11) NOT NULL,
  `name` VARCHAR(45) NOT NULL,
  `tariff` INT(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `tariff_idx` (`tariff`),
  KEY `id` (`id`,`name`),
  CONSTRAINT `tariff` FOREIGN KEY (`tariff`) REFERENCES `tariffs` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.01.2017, 13:47     MyBatis не хочет мапить вложенные друг в друга модели (relationship mapping)
Посмотрите здесь:

Нарисовать вложенные друг в друга окружности Pascal ABC
Mybatis+Postgre: среда Eclipse Indigo Java БД
Вложенные друг в друга контроллы: как обратиться к одному из них C# ASP.NET .NET 3.x
OpenGL Наложение друг на друга
Отделение объектов друг от друга HTML, CSS
Turbo Pascal С помощью рекурсии вывести вложенные друг в друга треугольники
Java БД Вложенные циклы for и while
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
drmind
0 / 0 / 0
Регистрация: 19.07.2015
Сообщений: 65
05.01.2017, 19:01  [ТС]     MyBatis не хочет мапить вложенные друг в друга модели (relationship mapping) #2
Небольшое дополнение: если сделать один запрос к БД с JOIN'ом, который сформирует из 4-х таблиц одну, то все мапится без проблем.
LeX
155 / 155 / 40
Регистрация: 30.06.2010
Сообщений: 629
05.01.2017, 22:15     MyBatis не хочет мапить вложенные друг в друга модели (relationship mapping) #3
drmind, что запрашиваете - то и мапит. Это не hibernate
drmind
0 / 0 / 0
Регистрация: 19.07.2015
Сообщений: 65
06.01.2017, 00:21  [ТС]     MyBatis не хочет мапить вложенные друг в друга модели (relationship mapping) #4
А как попросить чтобы мапил insurance?
LeX
155 / 155 / 40
Регистрация: 30.06.2010
Сообщений: 629
07.01.2017, 15:04     MyBatis не хочет мапить вложенные друг в друга модели (relationship mapping) #5
Давно не и использовал данный фреймворк, думаю тут ответ найдешь
drmind
0 / 0 / 0
Регистрация: 19.07.2015
Сообщений: 65
08.01.2017, 22:49  [ТС]     MyBatis не хочет мапить вложенные друг в друга модели (relationship mapping) #6
Я не нашел. Ни тут, ни в литературе. Везде разбираются простые примеры.
LeX
155 / 155 / 40
Регистрация: 30.06.2010
Сообщений: 629
09.01.2017, 08:42     MyBatis не хочет мапить вложенные друг в друга модели (relationship mapping) #7
drmind, да ладно? четвертая ссылка в простейшем поисковом запросе
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.01.2017, 14:50     MyBatis не хочет мапить вложенные друг в друга модели (relationship mapping)
Еще ссылки по теме:

Реализовать вложенные друг в друга выпадающие списки VBA
JavaScript Объекты находят друг на друга
Таблицы ссылаются друг на друга MS Access
C++ Вложенные в друг друга классы
Построить на форме вложенные друг в друга геометрические фигуры Delphi

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
drmind
0 / 0 / 0
Регистрация: 19.07.2015
Сообщений: 65
09.01.2017, 14:50  [ТС]     MyBatis не хочет мапить вложенные друг в друга модели (relationship mapping) #8
Спасибо, я это видел. И код этот у меня скачан с гита этой женщины. Все так. Но что не так с моим кодом?
Yandex
Объявления
09.01.2017, 14:50     MyBatis не хочет мапить вложенные друг в друга модели (relationship mapping)
Ответ Создать тему
Опции темы

Текущее время: 23:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru