Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring boot - как замапить id строку / 16 сообщений из 16, страница 1 из 1
07.10.2016, 07:50
    #39322396
зубок александр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring boot - как замапить id строку
Ну вот такая ситуация в старой БД. Сама БД перенесена на Oracle и все первичные ключи строки. Требуется именно новые значения добавлять. Как правильно маппить.

Ошибка при сохраненинии такая вылеает

авторUnknown integral data type for ids : java.lang.String; nested exception is org.hibernate.id.IdentifierGenerationException: Unknown integral data type for ids : java.lang.String
По маппингу массу ваариантов пробовал

автор @Id
@SequenceGenerator(name = "ID_SEQ_GNR", sequenceName = "SEQ_GNR")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "ID_SEQ_GNR")
@Column(columnDefinition = "CHAR(14)")
private String gnrid;
Пытаюсь так сделать. Последовтельность есть.
...
Рейтинг: 0 / 0
07.10.2016, 08:33
    #39322420
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring boot - как замапить id строку
зубок александр,

А можно весь стэктрейс посмотреть? Я подозреваю что SequenceGenerator рассчитан только на числа.
Возможно, придется, написать свой генератор, как тут:
http://stackoverflow.com/a/12517530
...
Рейтинг: 0 / 0
07.10.2016, 10:37
    #39322524
myaucha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring boot - как замапить id строку
А если
private String gnrid;
переписать на
private long gnrid;
а сами геттеры/и сеттеры уже String-овыми объявить?!
...
Рейтинг: 0 / 0
07.10.2016, 10:41
    #39322529
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring boot - как замапить id строку
зубок александрСама БД перенесена на Oracle и все первичные ключи строки.
и не одного программиста в штате чтобы тип поля В НОВОЙ БД сменить?
...
Рейтинг: 0 / 0
07.10.2016, 10:55
    #39322544
myaucha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring boot - как замапить id строку
зубок александрПо маппингу массу вариантов пробовалСоздайте тестовый entity и попробуйте вообще с Oraclo-вым сиквенсом (сначала с целочисленным) сохранение и чтение сделать. Возможно, что ошибка все равно будет. У меня, например, получилось нормально с сиквенсами работать только с ojdbc7-12.1.0.2.0.jar
...
Рейтинг: 0 / 0
07.10.2016, 11:45
    #39322595
зубок александр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring boot - как замапить id строку
Petro123зубок александрСама БД перенесена на Oracle и все первичные ключи строки.
и не одного программиста в штате чтобы тип поля В НОВОЙ БД сменить?
Я не в штате компании и политика фирмы от меня далеко - но в принципе аза атавизм по сути пишу конвертер для новой системы - цель поддерживать несколько месяцев данную базу а потом с нее уйти. А данных там море. И кстати да в штате компании очень мал айтишников и новых набирать не будут. Специфика организации. Ну и очень много старого софта который сейчас меняется на новый но процесс не быстрый да и конторе торопиться некуда.

авторЯ подозреваю что SequenceGenerator рассчитан только на числа.
Так сиквенс родной от данной бд и всегда использовался но я вссе же еще раз посмотрю. Спасибо заранее.

автора сами геттеры/и сеттеры уже String-овыми объявить?!
попробую. Ентити отгенерил сам плагин эклипса я уже правил. Инфы в инете много по такому случаю но она достаточно противоречиваа. И сильно зависит от версий - спринг и хибернейт меняются достаточно быстро у меня последняя конфа. То что год два назад уже не актуально.

авторСоздайте тестовый entity и попробуйте вообще с Oraclo-вым сиквенсом (сначала с целочисленным) сохранение и чтение сделать. Возможно, что ошибка все равно будет. У меня, например, получилось нормально с сиквенсами работать только с ojdbc7-12.1.0.2.0.jar
Также попробую. Всем спасибо. У кого каакие мысли есть еще - заранее благодарен.
...
Рейтинг: 0 / 0
07.10.2016, 12:17
    #39322645
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring boot - как замапить id строку
зубок александрЯ не в штате компании и политика фирмы от меня далеко - но в принципе аза атавизм по сути пишу конвертер для новой системы - цель поддерживать несколько месяцев данную базу а потом с нее уйти. А данных там море. И кстати да в штате компании очень мал айтишников и новых набирать не будут. Специфика организации. Ну и очень много старого софта который сейчас меняется на новый но процесс не быстрый да и конторе торопиться некуда.
я не понял что за воду ты написал.
зубок александрНу вот такая ситуация в старой БД. Сама БД перенесена на Oracle и все первичные ключи строки.
Это твоё?
- переделать поле из текста в PK Number - 5 минут работы.
Ты вместо этого делаешь какой то велосипед мазохизм где дата представлена как строки.
Почему тебе не сделать эти 5 минут я не понял.
Попробуй зайти в Developer и кликнуть на поле тип. Откроется окошко - выбрать Number.
Потом OK.
...
Рейтинг: 0 / 0
07.10.2016, 12:22
    #39322659
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring boot - как замапить id строку
зубок александрцель поддерживать несколько месяцев данную базу а потом с нее уйти.
- если сменить тип поля, то ничего не должно сломаться
- либо добавить поле и объявить его PK. А в триггере перебросить в старое как строку чтобы не сломались старые запросы.
...
Рейтинг: 0 / 0
07.10.2016, 13:55
    #39322791
зубок александр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring boot - как замапить id строку
Petro123,

авторЭто твоё?
- переделать поле из текста в PK Number - 5 минут работы.
Ты вместо этого делаешь какой то велосипед мазохизм где дата представлена как строки.
Почему тебе не сделать эти 5 минут я не понял.
Попробуй зайти в Developer и кликнуть на поле тип. Откроется окошко - выбрать Number.
Потом OK.

Нет не мое. Я не имею права менять структуру БД. Моя задача конвертер из XML в базу. Потому что бизнес-процессы придымывал не я. Потому что есть регламент разработки. Моя задача - софт которыйй вносит данные в базу. Все. Никаких изменений в структуре. С базой работает доольно старый софт на c++ и работаь будет еще n времени. Потому и вопрос задан не ка внести изменения в структуру таблиц (понятное дело это я и без форума могу сделать) а как обойти данную ошибку в рамках хибернейт.
Еще раз - внесения изменений в структуру БД запрещены.
...
Рейтинг: 0 / 0
07.10.2016, 14:05
    #39322798
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring boot - как замапить id строку
зубок александр,
тебе ответ был дан вторым постом - свой генератор-класс.
...
По поподу извратной базы, каждый сам себе хозяин.
Работать ли ему в таких условиях. "Мы не рабы - рабы не мы".
Удачи!
...
Рейтинг: 0 / 0
07.10.2016, 14:28
    #39322817
Alex123F
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring boot - как замапить id строку
зубок александр,


интересно почему для Id выбрано @Column(columnDefinition = "CHAR(14)")
может это оракловская специфика.
я в MSSQL все integer Id заменил на UID.
при этом в Entities генерю Id's следующим образом

import org.eclipse.persistence.annotations.UuidGenerator;
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
@Entity
@UuidGenerator(name="EMP_ID_GEN")
@Table(..............)
//......
    @Id
    @GeneratedValue(generator="EMP_ID_GEN")
    @Basic(optional = false)
    @NotNull


работает.
...
Рейтинг: 0 / 0
07.10.2016, 14:34
    #39322825
Alex123F
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring boot - как замапить id строку
более точно:


Код: java
1.
2.
3.
4.
5.
6.
7.
    @Id
    @GeneratedValue(generator="EMP_ID_GEN")
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 36)
    @Column(name = "BGUID")
    private String bGUID;
...
Рейтинг: 0 / 0
07.10.2016, 14:44
    #39322838
зубок александр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring boot - как замапить id строку
Petro123,

авторсвой генератор-класс
похоже что именно так что и буду делать.

Блашковиц - огромное спасибо за ссыль еще раз. Ну и вообще всем спасибо.

авторПо поподу извратной базы, каждый сам себе хозяин.
Работать ли ему в таких условиях. "Мы не рабы - рабы не мы".
Очень философскийц вопрос. В жизни не все определяется передовыми технологиями. Есть масса старого софта - поддержка, доработка и замена которого как ни странно тоже имеет свою специфику. Ну а в крупных компаниях регламент штука важная. В любом случае не буду далее философствовать.
...
Рейтинг: 0 / 0
07.10.2016, 16:52
    #39322961
зубок александр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring boot - как замапить id строку
Blazkowicz,

Можно такой вопрос - в новом хибернейте как называется объект SequenceGenerator

Ибо стандартный org.hibernate.id.SequenceGenerator устарел. Погугли - не особо что то нашел. Данный пост со стек оерфлоу раньше читал но как то не думал что придется именно его реилазовывать. Но видимо это наиболее правильный метод. Действительно sequence только для чисел - зачем он был там создан и как используется не ясно - сейчас уточняю этот вопрос.
...
Рейтинг: 0 / 0
10.10.2016, 11:33
    #39323643
зубок александр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring boot - как замапить id строку
Blazkowicz,

Такой момент - переделал в том же стиле как в блоге

автор@GenericGenerator(name = "STRING_SEQUENCE_GENERATOR", strategy = "de.kvwl.abrechnung.gostamm.transfer.model.StringSequenceGenerator", parameters = {
@Parameter(name = "STRING_SEQUENCE_GENERATOR", value = "SEQ_GNR") })
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "STRING_SEQUENCE_GENERATOR")


Итог

авторSQL Error: 2289, SQLState: 42000
ORA-02289: Sequence ist nicht vorhanden.


если убираю параметры

авторORA-02289: Sequence ist nicht vorhanden.

could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet
Рещультат в принципе такой же. Сообщение на немецком говорит о том что последовательность не может быть применена.
...
Рейтинг: 0 / 0
11.10.2016, 00:08
    #39324114
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring boot - как замапить id строку
Забавно приводить в форум немецкие сообщения.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring boot - как замапить id строку / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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