52 / 18 / 11
Регистрация: 27.03.2013
Сообщений: 789

Oracle + spring-data + hibernate - создание записи и автоматическая генерация id

25.09.2019, 16:02. Показов 2937. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно создать запись в таблице, но проблема в том, что таблица не имеет sequence , и в базе не хранятся счетчики созданных id в отдельной таблице.

Поэтому я не могу применить

Java
1
strategy = GenerationType.SEQUENCE
или

Java
1
strategy = GenerationType.TABLE
Я должен при создании записи, нарастить на 1, для получения последней записи из таблицы и при этом еще одно поле, должно при создании записи, заполняться системной датой из текущей базы. Для установки системной даты, есть встроенная переменная sysdate.

Писать запрос который будет включать все поля (используя параметр native ) - такой вариант не подходит, так как полей много, нужно передавать сущность.




Как это можно сделать с помощью только hibernate или spring data. Если используется spring data, то как это описать ?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.09.2019, 16:02
Ответы с готовыми решениями:

Spring Data Hibernate mapping entity without xml
Здравствуйте! Подскажите пожалуйста, как настроить маппинг сущности без использование xml. Тут пишут, что если я навесил @Enity...

Не получается связать Apache Ignite + Spring Data + Hibernate
Хочу сделать следующую вещь: Загрузить данные из бд, используя spring-data и hibernate, в кэш и дальше работать с ним с помощью ignit'а....

Подключение Oracle+maven+spring+Hibernate+jsp
Всем доброго времени суток, друзья помогите разобраться пожалуйста в web-разработке я новичок, и есть много не понятных моментов, которые я...

7
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
25.09.2019, 16:22
IDENTITY поставь
0
52 / 18 / 11
Регистрация: 27.03.2013
Сообщений: 789
26.09.2019, 10:00  [ТС]
Цитата Сообщение от xoraxax Посмотреть сообщение
IDENTITY поставь
oracle не поддерживает данный тип генерации

does not support identity key generation
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
26.09.2019, 10:15
Цитата Сообщение от masli Посмотреть сообщение
oracle не поддерживает данный тип генерации
ну создай тогда новый сиквенс - в чем проблема

Добавлено через 1 минуту
ну либо свой генератор пиши
0
52 / 18 / 11
Регистрация: 27.03.2013
Сообщений: 789
26.09.2019, 14:28  [ТС]
Цитата Сообщение от xoraxax Посмотреть сообщение
ну создай тогда новый сиквенс - в чем проблема
я не имею права на редактирования таблиц
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
26.09.2019, 14:36
тебе и не надо таблицы редактировать, тебе надо сиквенс создать
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
26.09.2019, 21:53
Цитата Сообщение от masli Посмотреть сообщение
я не имею права на редактирования таблиц
а как в эти таблицы до тебя данные попадали? Там же как-то генерился айди?
0
52 / 18 / 11
Регистрация: 27.03.2013
Сообщений: 789
27.09.2019, 21:17  [ТС]
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
а как в эти таблицы до тебя данные попадали? Там же как-то генерился айди?
таблицы создаются другой командой ( которая разрабатывает базы), и я не имею к этому отношения, и таблица которую я заполняю была вообще пустой.

Я попросил сделать триггер и он будет автоматически при вставке генерировать id, только я не буду знать какой id будет у записи.

Ну а пока я понял, что нет никаких способов со стороны java работать с oracle через стратегию IDENTITY.

1. Либо таблица должна иметь генератор в Sequence, либо генератор id должен быть описан в триггере для конкретной таблицы.
2. Если используется sequence, триггер должен быть убран, но при использовании sequence я получаю Id , который сгененировал Sequence и после вставки записи, могу по этому id звапросить только что добавленную сущность; для этого переопредлить нужно метод save() расширив интерфейс CrudRepository();
Также в этом случае аннотация @GeneratedValue должна быть указана, хоть она и бесполезна (она лишь указывает что значение генерируется на стороне базы, но если база не имеет ни триггера, ни Sequnece, эта аннотация не поможет). Если ее не будет, тогда будет выброшен Exception.

3. Как получить обратно запись, если она была записана с id, который генерируется на стороне базы триггером, я не знаю, если кто может привести код, напишите.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.09.2019, 21:17
Помогаю со студенческими работами здесь

[Hibernate & Spring Data] Получить список объектов сущности из ManyToMany
Сущность User @Entity @Table(name = "users") public class User { @Id @GeneratedValue(strategy = GenerationType.AUTO) ...

Oracle + Spring Data
нужно создать метод, который получает значению по указанному полю ( метод должен быть универсальным) , то есть имя поля и имя значения,...

Spring MVC. 404 ошибка при включении Spring Data JPA в проект
Добрый день. Есть простой шаблонный проект с использованием Spring MVC и Maven. С зависимостями Spring MVC проект собирается нормально и...

Ошибка подключения к базе Oracle DB Express 11g через Oracle Data Integrator
Приветствую. На работе дали задание: установить Oracle Data Integrator и создать стенд с репозиторием. Установил Java, Oracle DB...

Hibernate 5 spring
я пытаюсь создать через класс утилиту объект session но при инициализации путь к hibernate.cfg.xml оно пытается отыскать в папке ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru