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>
Я хотел бы генерировать идентификаторы из базы данных, а не из кода, и предпочтительно настроить объекты таким образом, чтобы, чтобы, чтобы, чтобы, чтобы, чтобы Я могу вставить шаблон и некоторые метки шаблонов в базу данных только с одним вызовом к репозиторию. -Пописывают его некоторыми метками (каждая с id.templateid = null) и просто вызовет репозиторие. Шаблон для получения идентификатора, сгенерированного DB, а затем Manully присваивает этот идентификатор всем меткам, а затем вызовет репозиторию. /p>
вызван: java.lang.illegalargumentException: не может установить java.util.uuid field my.project.entity.templateLabelid.templateid to org.hibernate.id .IdentIfierGeneratorHelper $ 1
Я видел то же исключение, которое обсуждалось в другом посте, но решение было использовать @embeddedid
, которое я уже уже Использование, поэтому мне интересно, что еще я должен изменить в своих сущностях. Мой класс TemplateLabel необходим.
однонаправленное связывание, вероятно, предпочтительнее, так как никогда не будет случая, когда я бы получил метку самостоятельно, но я не уверен, смогу ли я достичь одного хранилища. объяснил выше без него. Я также хотел бы удалить его и просто использовать Uuid, если смогу, чтобы все было просто. Но это более незначительная проблема (и кажется, что это тоже может быть менее эффективным?).
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;
private String code; } < /code> проблема < /h4> Я хотел бы генерировать идентификаторы из базы данных, а не из кода, и предпочтительно настроить объекты таким образом, чтобы, чтобы, чтобы, чтобы, чтобы, чтобы Я могу вставить шаблон и некоторые метки шаблонов в базу данных только с одним вызовом к репозиторию. -Пописывают его некоторыми метками (каждая с id.templateid = null) и просто вызовет репозиторие. Шаблон для получения идентификатора, сгенерированного DB, а затем Manully присваивает этот идентификатор всем меткам, а затем вызовет репозиторию. /p>
вызван: java.lang.illegalargumentException: не может установить java.util.uuid field my.project.entity.templateLabelid.templateid to org.hibernate.id .IdentIfierGeneratorHelper $ 1
Я видел то же исключение, которое обсуждалось в другом посте, но решение было использовать @embeddedid [/code], которое я уже уже Использование, поэтому мне интересно, что еще я должен изменить в своих сущностях. Мой класс TemplateLabel необходим. однонаправленное связывание, вероятно, предпочтительнее, так как никогда не будет случая, когда я бы получил метку самостоятельно, но я не уверен, смогу ли я достичь одного хранилища. объяснил выше без него. Я также хотел бы удалить его и просто использовать Uuid, если смогу, чтобы все было просто. Но это более незначительная проблема (и кажется, что это тоже может быть менее эффективным?).
Почему этот столбец не найден (SQL Exception) при выполнении последнего запроса в репо (выберите Студент по ключам Forign Department_ID)
Clact Class
package com.global.student.entity;