Я использую Hibernate для этого проекта. У меня есть суперкласс Mensajes с 2 постами подклассов и разрешений, и я использую стратегию наследования «таблица на класс». Я пытаюсь генерировать идентификаторы для этого класса, используя стратегию таблицы, поскольку я работаю с MySQL для базы данных. это, и когда я пытаюсь установить его, чтобы выбирать данные из таблицы, созданной с помощью стратегии GenerationType.table, это (очевидно) не является автоматическим обновлением. файл. Надеюсь, нет: (< /p>
Это суперкласс Mensajes (другие атрибуты, опущенные для краткости): < /p>
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class Mensajes {
@Id
@GeneratedValue(strategy = GenerationType.TABLE, generator = "id_gen")
@TableGenerator(table = "mid_seq", name = "id_gen", initialValue = 0, allocationSize = 1)
private Long id;
private String fecha, cont;
//...getters, setters, etc
< /code>
subclass Resenia: < /p>
@Entity
public class Resenia extends Mensajes{
@ColumnDefault("0")
private int rating;
//...getters, setters, etc
< /code>
Пост подкласса: < /p>
@Entity
public class Post extends Mensajes {
@ColumnDefault("0")
private int votos;
//...getters, setters, etc
< /code>
Вывод Hibernate's re: таблица «последовательность»: < /p>
Hibernate:
create table mid_seq (
next_val bigint,
sequence_name varchar(255) not null,
primary key (sequence_name)
) engine=InnoDB
Hibernate:
insert into mid_seq(sequence_name, next_val) values ('mensajes',0)
< /code>
Что я пытаюсь вставить: < /p>
insert into resenia(id, fecha, cont, rating) values ((select next_val from mid_seq), "01/01/2000", "BUU", 2);
insert into resenia(id, fecha, cont, rating) values ((select next_val from mid_seq), "01/01/2003", "bien", 4);
< /code>
Правильно встает первый, но 2-й показывает: < /p>
SQL Error [1062] [23000]: Duplicate entry '0' for key 'PRIMARY'
< /code>
Кстати, когда я говорю «опустить поле идентификатора», я имел в виду попытку вставить так: < /p>
insert into resenia(fecha, cont, rating) values ("01/01/2000", "BUU", 2);
< /code>
, которые бросают: < /p>
SQL Error [1364] [HY000]: Field 'id' doesn't have a default value
< /code>
это безнадежно? Должен ли я попробовать @mappedsuperclass для наследства?
Подробнее здесь: https://stackoverflow.com/questions/796 ... type-table
Как вставить строки в таблицу при использовании GenerationType.table? ⇐ MySql
Форум по Mysql
1750566184
Anonymous
Я использую Hibernate для этого проекта. У меня есть суперкласс Mensajes с 2 постами подклассов и разрешений, и я использую стратегию наследования «таблица на класс». Я пытаюсь генерировать идентификаторы для этого класса, используя стратегию таблицы, поскольку я работаю с MySQL для базы данных. это, и когда я пытаюсь установить его, чтобы выбирать данные из таблицы, созданной с помощью стратегии GenerationType.table, это (очевидно) не является автоматическим обновлением. файл. Надеюсь, нет: (< /p>
Это суперкласс Mensajes (другие атрибуты, опущенные для краткости): < /p>
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class Mensajes {
@Id
@GeneratedValue(strategy = GenerationType.TABLE, generator = "id_gen")
@TableGenerator(table = "mid_seq", name = "id_gen", initialValue = 0, allocationSize = 1)
private Long id;
private String fecha, cont;
//...getters, setters, etc
< /code>
subclass Resenia: < /p>
@Entity
public class Resenia extends Mensajes{
@ColumnDefault("0")
private int rating;
//...getters, setters, etc
< /code>
Пост подкласса: < /p>
@Entity
public class Post extends Mensajes {
@ColumnDefault("0")
private int votos;
//...getters, setters, etc
< /code>
Вывод Hibernate's re: таблица «последовательность»: < /p>
Hibernate:
create table mid_seq (
next_val bigint,
sequence_name varchar(255) not null,
primary key (sequence_name)
) engine=InnoDB
Hibernate:
insert into mid_seq(sequence_name, next_val) values ('mensajes',0)
< /code>
Что я пытаюсь вставить: < /p>
insert into resenia(id, fecha, cont, rating) values ((select next_val from mid_seq), "01/01/2000", "BUU", 2);
insert into resenia(id, fecha, cont, rating) values ((select next_val from mid_seq), "01/01/2003", "bien", 4);
< /code>
Правильно встает первый, но 2-й показывает: < /p>
SQL Error [1062] [23000]: Duplicate entry '0' for key 'PRIMARY'
< /code>
Кстати, когда я говорю «опустить поле идентификатора», я имел в виду попытку вставить так: < /p>
insert into resenia(fecha, cont, rating) values ("01/01/2000", "BUU", 2);
< /code>
, которые бросают: < /p>
SQL Error [1364] [HY000]: Field 'id' doesn't have a default value
< /code>
это безнадежно? Должен ли я попробовать @mappedsuperclass для наследства?
Подробнее здесь: [url]https://stackoverflow.com/questions/79674894/how-to-insert-rows-into-table-when-using-generationtype-table[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия