|
|
|
Spring boot - как замапить id строку
|
|||
|---|---|---|---|
|
#18+
Ну вот такая ситуация в старой БД. Сама БД перенесена на 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; Пытаюсь так сделать. Последовтельность есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2016, 07:50 |
|
||
|
Spring boot - как замапить id строку
|
|||
|---|---|---|---|
|
#18+
зубок александр, А можно весь стэктрейс посмотреть? Я подозреваю что SequenceGenerator рассчитан только на числа. Возможно, придется, написать свой генератор, как тут: http://stackoverflow.com/a/12517530 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2016, 08:33 |
|
||
|
Spring boot - как замапить id строку
|
|||
|---|---|---|---|
|
#18+
А если private String gnrid; переписать на private long gnrid; а сами геттеры/и сеттеры уже String-овыми объявить?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2016, 10:37 |
|
||
|
Spring boot - как замапить id строку
|
|||
|---|---|---|---|
|
#18+
зубок александрСама БД перенесена на Oracle и все первичные ключи строки. и не одного программиста в штате чтобы тип поля В НОВОЙ БД сменить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2016, 10:41 |
|
||
|
Spring boot - как замапить id строку
|
|||
|---|---|---|---|
|
#18+
зубок александрПо маппингу массу вариантов пробовалСоздайте тестовый entity и попробуйте вообще с Oraclo-вым сиквенсом (сначала с целочисленным) сохранение и чтение сделать. Возможно, что ошибка все равно будет. У меня, например, получилось нормально с сиквенсами работать только с ojdbc7-12.1.0.2.0.jar ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2016, 10:55 |
|
||
|
Spring boot - как замапить id строку
|
|||
|---|---|---|---|
|
#18+
Petro123зубок александрСама БД перенесена на Oracle и все первичные ключи строки. и не одного программиста в штате чтобы тип поля В НОВОЙ БД сменить? Я не в штате компании и политика фирмы от меня далеко - но в принципе аза атавизм по сути пишу конвертер для новой системы - цель поддерживать несколько месяцев данную базу а потом с нее уйти. А данных там море. И кстати да в штате компании очень мал айтишников и новых набирать не будут. Специфика организации. Ну и очень много старого софта который сейчас меняется на новый но процесс не быстрый да и конторе торопиться некуда. авторЯ подозреваю что SequenceGenerator рассчитан только на числа. Так сиквенс родной от данной бд и всегда использовался но я вссе же еще раз посмотрю. Спасибо заранее. автора сами геттеры/и сеттеры уже String-овыми объявить?! попробую. Ентити отгенерил сам плагин эклипса я уже правил. Инфы в инете много по такому случаю но она достаточно противоречиваа. И сильно зависит от версий - спринг и хибернейт меняются достаточно быстро у меня последняя конфа. То что год два назад уже не актуально. авторСоздайте тестовый entity и попробуйте вообще с Oraclo-вым сиквенсом (сначала с целочисленным) сохранение и чтение сделать. Возможно, что ошибка все равно будет. У меня, например, получилось нормально с сиквенсами работать только с ojdbc7-12.1.0.2.0.jar Также попробую. Всем спасибо. У кого каакие мысли есть еще - заранее благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2016, 11:45 |
|
||
|
Spring boot - как замапить id строку
|
|||
|---|---|---|---|
|
#18+
зубок александрЯ не в штате компании и политика фирмы от меня далеко - но в принципе аза атавизм по сути пишу конвертер для новой системы - цель поддерживать несколько месяцев данную базу а потом с нее уйти. А данных там море. И кстати да в штате компании очень мал айтишников и новых набирать не будут. Специфика организации. Ну и очень много старого софта который сейчас меняется на новый но процесс не быстрый да и конторе торопиться некуда. я не понял что за воду ты написал. зубок александрНу вот такая ситуация в старой БД. Сама БД перенесена на Oracle и все первичные ключи строки. Это твоё? - переделать поле из текста в PK Number - 5 минут работы. Ты вместо этого делаешь какой то велосипед мазохизм где дата представлена как строки. Почему тебе не сделать эти 5 минут я не понял. Попробуй зайти в Developer и кликнуть на поле тип. Откроется окошко - выбрать Number. Потом OK. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2016, 12:17 |
|
||
|
Spring boot - как замапить id строку
|
|||
|---|---|---|---|
|
#18+
зубок александрцель поддерживать несколько месяцев данную базу а потом с нее уйти. - если сменить тип поля, то ничего не должно сломаться - либо добавить поле и объявить его PK. А в триггере перебросить в старое как строку чтобы не сломались старые запросы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2016, 12:22 |
|
||
|
Spring boot - как замапить id строку
|
|||
|---|---|---|---|
|
#18+
Petro123, авторЭто твоё? - переделать поле из текста в PK Number - 5 минут работы. Ты вместо этого делаешь какой то велосипед мазохизм где дата представлена как строки. Почему тебе не сделать эти 5 минут я не понял. Попробуй зайти в Developer и кликнуть на поле тип. Откроется окошко - выбрать Number. Потом OK. Нет не мое. Я не имею права менять структуру БД. Моя задача конвертер из XML в базу. Потому что бизнес-процессы придымывал не я. Потому что есть регламент разработки. Моя задача - софт которыйй вносит данные в базу. Все. Никаких изменений в структуре. С базой работает доольно старый софт на c++ и работаь будет еще n времени. Потому и вопрос задан не ка внести изменения в структуру таблиц (понятное дело это я и без форума могу сделать) а как обойти данную ошибку в рамках хибернейт. Еще раз - внесения изменений в структуру БД запрещены. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2016, 13:55 |
|
||
|
Spring boot - как замапить id строку
|
|||
|---|---|---|---|
|
#18+
зубок александр, тебе ответ был дан вторым постом - свой генератор-класс. ... По поподу извратной базы, каждый сам себе хозяин. Работать ли ему в таких условиях. "Мы не рабы - рабы не мы". Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2016, 14:05 |
|
||
|
Spring boot - как замапить id строку
|
|||
|---|---|---|---|
|
#18+
зубок александр, интересно почему для 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. работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2016, 14:28 |
|
||
|
Spring boot - как замапить id строку
|
|||
|---|---|---|---|
|
#18+
более точно: Код: java 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2016, 14:34 |
|
||
|
Spring boot - как замапить id строку
|
|||
|---|---|---|---|
|
#18+
Petro123, авторсвой генератор-класс похоже что именно так что и буду делать. Блашковиц - огромное спасибо за ссыль еще раз. Ну и вообще всем спасибо. авторПо поподу извратной базы, каждый сам себе хозяин. Работать ли ему в таких условиях. "Мы не рабы - рабы не мы". Очень философскийц вопрос. В жизни не все определяется передовыми технологиями. Есть масса старого софта - поддержка, доработка и замена которого как ни странно тоже имеет свою специфику. Ну а в крупных компаниях регламент штука важная. В любом случае не буду далее философствовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2016, 14:44 |
|
||
|
Spring boot - как замапить id строку
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Можно такой вопрос - в новом хибернейте как называется объект SequenceGenerator Ибо стандартный org.hibernate.id.SequenceGenerator устарел. Погугли - не особо что то нашел. Данный пост со стек оерфлоу раньше читал но как то не думал что придется именно его реилазовывать. Но видимо это наиболее правильный метод. Действительно sequence только для чисел - зачем он был там создан и как используется не ясно - сейчас уточняю этот вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2016, 16:52 |
|
||
|
Spring boot - как замапить id строку
|
|||
|---|---|---|---|
|
#18+
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 Рещультат в принципе такой же. Сообщение на немецком говорит о том что последовательность не может быть применена. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2016, 11:33 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39322825&tid=2123627]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
64ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 243ms |
| total: | 395ms |

| 0 / 0 |
