Гость
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Как продебажить что там нагенерил Mybatis? / 14 сообщений из 14, страница 1 из 1
22.06.2020, 18:17
    #39971960
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как продебажить что там нагенерил Mybatis?
Получаю bad grammar sql exception ?
Код: sql
1.
insert into some_table(entity_guid, entity_value) values(?, ?);



create table some_table(entity_guid varchar2(36), entity_value clob);

Руками все вставляется на отлично с данными снятыми прям в дебаге но Mybatis чтото то там генерит дополнительно и ломает простой запрос

Код: xml
1.
2.
3.
4.
  <insert id="insertEntity" parameterType="SomeEntity">
    INSERT INTO SOME_TABLE(ENTITY_GUID, ENTITY_VALUE)
    VALUES (#{someEntity.entityGuid}, TO_CLOB(#{someEntity.entityValue}));
  </insert>
...
Рейтинг: 0 / 0
22.06.2020, 18:49
    #39971978
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как продебажить что там нагенерил Mybatis?
Zzz79
еще один адепт ХИБЕР -ЗЛО?


Наоборот я больше поклонник hibernate нежели mybatis. Кейс вот такой вот странный не работает и непонятно как дебажить. Судя по коду поковырял и погуглил никто толком не знает как вставить в clob (hello insert mybatis из доки не работает).
Большей частью советы воспользоваться callable процедурой.
...
Рейтинг: 0 / 0
22.06.2020, 19:43
    #39972013
SpringMan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как продебажить что там нагенерил Mybatis?
В someEntity.entityValue какой тип? Попробуй для начала убрать to_clob и указать явно jdbcType в #{}
...
Рейтинг: 0 / 0
22.06.2020, 23:04
    #39972097
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как продебажить что там нагенерил Mybatis?
SpringMan,

так я попробовал сначала и это не сработало, есть подозрение что mybatis "путает" string => varchar2 и string => clob
и непонятно как правильно заставить его загнать в statement string

Этот статемент проходит успешно
Код: sql
1.
insert into some_table(entity_guid, entity_value) values('bla-bla-bla-uuid', 'some_json_in_here') 


нормально вставляет с данными выдернутыми из дебага
...
Рейтинг: 0 / 0
22.06.2020, 23:18
    #39972103
SpringMan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как продебажить что там нагенерил Mybatis?
Как конкретно пробовал? #{someEntity.entityValue,jdbcType=CLOB} так? Тут написано, что ClobTypeHandler должен вызываться, он вызывается?
И текст ошибки бы еще)
...
Рейтинг: 0 / 0
22.06.2020, 23:36
    #39972108
SpringMan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как продебажить что там нагенерил Mybatis?
MyBatis вполне удобный, если много больших и сложных запросов
...
Рейтинг: 0 / 0
22.06.2020, 23:53
    #39972112
SpringMan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как продебажить что там нагенерил Mybatis?
Zzz79

а зачем мне их писать в хмл? я их могу написать в обычной jdbc
а если супер сложных запросов нет - нах оно вообще надо тянуть в проект human unreadable xml портянки

вся это хмл шляпа давно уже прошлый век - отходите от нее коллеги ,как бы это не было больно


Если запросы большие, то держать их в коде ужасно неудобно/нечитабельно и это приводит к ошибкам. Чтобы запрос можно было удобно прочитать и отлаживать, его хочется вынести в отдельный файл. Если в один файл хочешь положить несколько запросов, то нужна структура для файла. Какие еще есть удобные структуры для хранения запросов? Можешь предложить структуру вместо xml или спрособ хранения этих запросов?
+ mybatis дает возможность маппить результат запроса сразу в нужный dto - в голом jdbc с этим ResultSet-ом будет много лишней возьни
...
Рейтинг: 0 / 0
23.06.2020, 00:14
    #39972115
SpringMan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как продебажить что там нагенерил Mybatis?
Zzz79

могу предложить жук и хибер)

пс .если в голом ждбс много возни в резальсетом - ты столько же возишься с хмл портянками майбайтис

от этой шляпы давно уже все отказались ,так как это не жпа ,а просто какой то новый вид извращения над ждбс,причем ждбс помоему даже проще в юзе

Еще раз, есть проблема: большие sql запросы
В хибернейте:
1) Через hql их написать часто просто невозможно
2) Нативные запросы в java коде - это боль, от который мы хотим уйти (почему описано постом выше)
В jooq-е:
1) Большие запросы это просто нечитаемое нечто, которые невозможно отлаживать в sql редакторе

Какие еще варианты решения? От MyBatis-а никто не отказывался, он всегда занимал узкую нишу для особых случаев.
Проще это понятие относительное, кому-то изначально было тоже проще работать с jdbc, а не hibernate-ом. Учишь hibernate и он становится проще jdbc. Учишь mybatis и он становится проще jdbc. По сравнению с jdbc, mybatis сильно и упрощает и уменьшает размер кода
...
Рейтинг: 0 / 0
23.06.2020, 07:39
    #39972160
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как продебажить что там нагенерил Mybatis?
lleming,

Это писали китайцы, он может вести себя дико. Если таки не совладаешь с батисом есть jdbi еще.
...
Рейтинг: 0 / 0
23.06.2020, 10:36
    #39972248
SpringMan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как продебажить что там нагенерил Mybatis?
Zzz79
не очень понятно чем длинный запорос лежаший в простыне хмл будет отличаться от запроса в жуке том же)

Тем, что его нельзя просто взять и запустить в sql тулзе. Да и сам этот запрос захламлен java кодом. Вначале запрос пишут, а потом вставляют его в код. С jooq-ом надо написать sql запрос, потом написать аналогичный java код. И делать так каждый раз при правках

Zzz79
а по поводу удобности дебага майбайтис - мы видим по наличию этой темы))

Количество тем со смыслом "какой же spring/hibernate/javaee/java/... неудобное Г" больше в разы. Отсюда делаем выводы, что эти все проекты хуже?

Zzz79
редактор скл то зачем? бери запрос и в любой скл тулз его пихай и редактируй как тебе надо- помоему сложные запросы именно так и проектируются

Ну редактор скл это и есть какой-то скл тулз
...
Рейтинг: 0 / 0
23.06.2020, 12:14
    #39972312
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как продебажить что там нагенерил Mybatis?
По предназначению MyBatis это не ORM... а ROM. Типа маппинг наоборот. Например если у вас
есть легаси система где 100500 хранимых процедур на PL/SQL и вам надо с ней интегрироваться
тогда Батис - это хороший выбор. Вот они так и пишут.

https://en.wikipedia.org/wiki/MyBatis - В отличие от ORM, Mb не отображает Java Objs на таблицы БД но отображает Java МЕТОДЫ на SQL-операторы.
- Mb позволяет вам юзать всю функционалность БД типа хранимок вьюшек запросов любой сложности и вендор-проприетарных фич.
- ...

Тоесть сравнивать его с хибером бесполезно т.к. сегменты их решаемых задач где-то не пересекаются.
Мы будем выглядеть просто глупцами если будем их сравнивать.
...
Рейтинг: 0 / 0
23.06.2020, 14:52
    #39972428
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как продебажить что там нагенерил Mybatis?
Zzz79
на хабре как раз таки его представляют
А давно хабр занял нишу авторитетного эксперта?
Или, как обычно, всё зависит от конкретного автора и конкретной статьи?
...
Рейтинг: 0 / 0
23.06.2020, 15:00
    #39972431
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как продебажить что там нагенерил Mybatis?
Zzz79
mayton
По предназначению MyBatis это не ORM... а ROM. Типа маппинг наоборот. Например если у вас
есть легаси система где 100500 хранимых процедур на PL/SQL и вам надо с ней интегрироваться
тогда Батис - это хороший выбор. Вот они так и пишут.

пропущено...


Тоесть сравнивать его с хибером бесполезно т.к. сегменты их решаемых задач где-то не пересекаются.
Мы будем выглядеть просто глупцами если будем их сравнивать.

на хабре как раз таки его представляют как более быструю альтернативу хиберу кстати

Ну это как сказать что резиновая женщина - альтернатива. Не знаю.

Каждый проект надо отдельно рассматривать. Попробовать пилот с Mb, Hiber.
И где-то на 1-й sprint уже будет видно что подходит а что нет.
...
Рейтинг: 0 / 0
23.06.2020, 18:54
    #39972526
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как продебажить что там нагенерил Mybatis?
SpringMan
Как конкретно пробовал? #{someEntity.entityValue,jdbcType=CLOB} так? Тут написано, что ClobTypeHandler должен вызываться, он вызывается?
И текст ошибки бы еще)


Ошибка Bad sql grammar. Вообщем непонятно почему но заработало. Вроде ничего не менял. Тут следует упонянуть что сообщения об ошибках в oracle еще те в Postgresql поприятней будет.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Как продебажить что там нагенерил Mybatis? / 14 сообщений из 14, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]