Композитный ключ JPA, содержащий иностранный ключ со DB-сгенерированным значениемJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Композитный ключ JPA, содержащий иностранный ключ со DB-сгенерированным значением

Сообщение Anonymous »

схема < /h4>

Код: Выделить всё

CREATE TABLE Template (
id UUID DEFAULT uuid_generate_v4() PRIMARY KEY,
-- omitted
);

CREATE TABLE TemplateLabel (
template_id UUID REFERENCES Template(id) ON DELETE CASCADE,
code TEXT NOT NULL,
-- omitted

PRIMARY KEY (template_id, code)
);
< /code>
Шаблон имеет отношение к одно-кому с TemplateLabel. TemplateLabel использует Template.id и код в качестве составного первичного ключа. .java: < /p>
@Entity
public class Template {
@Id
@GeneratedValue(strategy = GenerationType.UUID)
private UUID id;

@OneToMany(mappedBy = "template", cascade = CascadeType.ALL, orphanRemoval = true)
private List labels;
}
< /code>
templateLabel.java:
 написан@Entity
public class TemplateLabel {
@EmbeddedId
private TemplateLabelId id;

@ManyToOne(fetch = FetchType.LAZY)
@MapsId("templateId")
@JoinColumn(name = "template_id")
private Template template;
}
< /code>
templateLabelid.java:
@Embeddable
public class TemplateLabelId {
@Column(name = "template_id")
private UUID templateId;

private String code;
}
< /code>
 шаблон сохранения < /h4>
Я строит шаблон и предварительно заполняйте его всеми его метками, устанавливая все, кроме Template.id и TemplateLabel.id. Шаблон, который должен иметь одинаковое значение при вставке в дБ.Template template = Template.builder()
// all the fields except for id and labels
.build();
List labels = dto.getLabels().stream().map(label ->
TemplateLabel.builder()
.id(new TemplateLabelId(null, label.getCode()))
.template(template)
// other fields
.build()
).toList();
template.setLabels(labels);
templateRepository.save(template);
< /code>
 проблема < /h4>
Я хотел бы генерировать идентификаторы из базы данных, а не из кода, и предпочтительно настроить объекты таким образом, чтобы, чтобы, чтобы, чтобы, чтобы, чтобы Я могу вставить шаблон и некоторые метки шаблонов в базу данных только с одним вызовом на repository.save. < /P>
Другими словами, я хотел бы создать объект шаблона с id = null и предварительно заполнить его некоторыми метками (каждая с id.templateid = null), и просто вызовет репозиторий. Repository.ave Сначала с шаблоном для получения идентификатора, сгенерированного DB, а затем Manully присвоил этот идентификатор всем этикеткам, а затем вызовите репозиторий. Опять же. Не может установить java.util.uuid field my.project.entity.templateLabelid.templateid to org.hibernate.id.identifiergeneratorHelper $ 1

Я видел то же исключение, которое обсуждалось в другом посте, но решение было использовать @embeddedid 
, Что я уже использую, поэтому мне интересно, что еще мне следует изменить в своих сущностях. Если Поле шаблона в моем классе TemplateLabel необходимо.
Однонаправленное связывание, вероятно, предпочтительнее, так как никогда не будет случая, когда я сам остановил бы этикетку, но я не уверен, смогу ли я достичь одного хранилища. Сохраните то, что я объяснил выше без него. Я также хотел бы удалить его и просто использовать Uuid, если смогу, чтобы все было просто. Но это более незначительная проблема (и кажется, что это тоже может быть менее эффективным?).

Подробнее здесь: https://stackoverflow.com/questions/794 ... ated-value
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Композитный ключ JPA, содержащий иностранный ключ со DB-сгенерированным значением
    Anonymous » » в форуме JAVA
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Иностранный ключ не найден с JPA
    Anonymous » » в форуме JAVA
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Иностранный ключ (департамент_ид) не найден с помощью JPA Spring [закрыто]
    Anonymous » » в форуме JAVA
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Java: композитный ключ в Hashmaps
    Anonymous » » в форуме JAVA
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Выберите (композитный) первичный ключ из таблицы
    Anonymous » » в форуме MySql
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»