Schema < /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>
Vorlage hat eine Eins-zu-Viele-Beziehung zu Templatelabel. TemplatElabel verwendet template.id und einen Code als zusammengesetzte Primärschlüssel. .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>
Problem < /h4>
Ich möchte die IDs aus der Datenbank und nicht aus dem Code generieren und die Entitäten vorzugsweise auf eine Weise einrichten Ich kann eine Vorlage und einige Vorlagenbezeichnungen in die Datenbank mit nur einem Aufruf in repository.save einfügen. -Füllen Sie es mit einigen Etiketten (jeweils mit id.templateId = null) und rufen Sie einfach repository.save auf der Vorlage auf und lassen Eine Vorlage, um eine DB-generierte ID zu erhalten und dann alle Labels zuzuweisen, und dann erneut repository aufzurufen. /p>
verursacht durch: java.lang.illegalargumentException: Kann nicht java.util.uuid field my.project.entity.temPlatelabelid.templateId to org.hibernate.id.id.Id.Id.Ids.Id.Id.Id.Ids. .IdentifiergeneratorHelper $ 1
Ich habe dieselbe Ausnahme in einem anderen Beitrag gesehen Verwenden Sie, also frage ich mich, was ich in meinen Entitäten sonst noch ändern sollte. Meine Templatelabel -Klasse ist notwendig. oben ohne es erklärt. Ich möchte es auch entfernen und einfach das Uuid verwenden, wenn ich kann, um die Dinge einfach zu halten. Aber es ist ein kleineres Problem (und es scheint, dass es auch weniger leistungsfähig sein könnte?).
JPA Composite-Schlüssel, der einen Fremdschlüssel mit DB-generierter Wert enthält ⇐ Java
-
- Similar Topics
- Replies
- Views
- Last post