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

Java EE (J2EE)

Войти
Регистрация
Восстановить пароль
 
drmind
0 / 0 / 0
Регистрация: 19.07.2015
Сообщений: 67
#1

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

03.01.2017, 13:47. Просмотров 341. Ответов 7
Метки нет (Все метки)

Всем привет!
Есть класс 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;
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.01.2017, 13:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос MyBatis не хочет мапить вложенные друг в друга модели (relationship mapping) (Java EE):

В Eclipse не работает пробел и символы налезают друг на друга - Java
Помогите с Eclipse пожалуйста. Скачал Eclipse с официального сайта. Открывается нормально, но там куда код пишется символы налезают друг на...

Вложенные в друг друга классы - C++
Есть исходный код: class1.h #pragma once #include &quot;class2.h&quot; class class1 { private: class2* c2; public: ...

Нарисовать вложенные друг в друга окружности - Pascal ABC
Помогите, пожалуйста, найти ошибку. Использовать procedure InnerCircles(x, y, minR, step, N: integer); x, y – координаты центра...

Реализовать вложенные друг в друга выпадающие списки - VBA
Добрый день!Такой вопрос: сложный выпадающий список. поясняю: нажимаешь на стрелку-&gt;выпадает список-&gt;наводишь на любой...

С помощью рекурсии вывести вложенные друг в друга треугольники - Turbo Pascal
С помощью рекурсии выводит вложенные треугольники друг в друга. помогите пожалуйста написать эту программу на языке Pascal=)

Построить на форме вложенные друг в друга геометрические фигуры - Delphi
Построить на форме вложенные друг в друга геометрические фигуры: квадрат- ромб-круг-ромб-круг. И каждую фигуру в разный цвет разукрасить. ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
drmind
0 / 0 / 0
Регистрация: 19.07.2015
Сообщений: 67
05.01.2017, 19:01  [ТС] #2
Небольшое дополнение: если сделать один запрос к БД с JOIN'ом, который сформирует из 4-х таблиц одну, то все мапится без проблем.
0
LeX
261 / 261 / 70
Регистрация: 30.06.2010
Сообщений: 988
05.01.2017, 22:15 #3
drmind, что запрашиваете - то и мапит. Это не hibernate
0
drmind
0 / 0 / 0
Регистрация: 19.07.2015
Сообщений: 67
06.01.2017, 00:21  [ТС] #4
А как попросить чтобы мапил insurance?
0
LeX
261 / 261 / 70
Регистрация: 30.06.2010
Сообщений: 988
07.01.2017, 15:04 #5
Давно не и использовал данный фреймворк, думаю тут ответ найдешь
0
drmind
0 / 0 / 0
Регистрация: 19.07.2015
Сообщений: 67
08.01.2017, 22:49  [ТС] #6
Я не нашел. Ни тут, ни в литературе. Везде разбираются простые примеры.
0
LeX
261 / 261 / 70
Регистрация: 30.06.2010
Сообщений: 988
09.01.2017, 08:42 #7
drmind, да ладно? четвертая ссылка в простейшем поисковом запросе
0
drmind
0 / 0 / 0
Регистрация: 19.07.2015
Сообщений: 67
09.01.2017, 14:50  [ТС] #8
Спасибо, я это видел. И код этот у меня скачан с гита этой женщины. Все так. Но что не так с моим кодом?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.01.2017, 14:50
Привет! Вот еще темы с ответами:

.NET 3.x Вложенные друг в друга контроллы: как обратиться к одному из них - C# ASP.NET
Помогите решить нехитрую задачку: есть gridview1, в нем еще один gridview2, а в gridview2 - dropdownlist1. Как добраться до...

Наложение друг на друга - OpenGL
Добрый день форумчане у меня происходит вот такое с чем это может быть связано?

Вложенность коллекций друг в друга - 1С
Как сделать вложенность коллекций друг в друга. Например создать структуру с вложенными полями - таблицами значений, а в таблицы значений...

Компы не видят друг друга - Сети
Дома d-link 2500u модем в режиме роутера, комп, ноут и все это в свитч D-link DES-1005D. Инет есть и на компе, и на ноуте, но друг друга...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
09.01.2017, 14:50
Ответ Создать тему
Опции темы

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