Ich habe eine Datenbank mit der folgenden Struktur:JPA-Entität ohne id
CREATE TABLE entity (
id SERIAL,
name VARCHAR(255),
PRIMARY KEY (id)
);
CREATE TABLE entity_property (
entity_id SERIAL,
name VARCHAR(255),
value TEXT
);
Wenn ich versuche, eine EntityProperty Klasse erstellen
@Entity
@Table(name="entity_property")
public class EntityProperty {
private String name;
private String value;
@Column(name="name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Column(name="value", nullable=true, length=255)
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
Ich erhalte die folgende Ausnahme:
org.hibernate.AnnotationException: No identifier specified for entity: package.EntityProperty
Ich weiß, dass JPA-Entitäten einen Primärschlüssel haben müssen, aber ich kann das Datenbankschema aus Gründen, die außerhalb meines Kontos liegen, nicht ändern rol. Ist es möglich JPA (Hibernate) -Entitäten zu erstellen, die mit einem solchen Datenbankschema arbeiten?
Danke. Aber wie kann ich in diesem Fall direkt auf die Entität "name" zugreifen? Meine JP-QL-Abfrage funktioniert nur gut, wenn ich über "entity.id.name" auf "name" zugreife, aber ich denke, dass das nicht stimmt. – mikhail
@mikhail: Wenn Sie Ansatz mit '@ EmbeddedId' nicht mögen, können Sie alternativen Ansatz mit' @ IdClass' versuchen: http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/#d0e1112 – axtavt
Sollte die Annotation für 'EntityPropertyPK' '@ Embeddedable' statt' @ Embedded' sein? – HDoan