J'ai une base de données avec la structure suivante:entité JPA sans id
CREATE TABLE entity (
id SERIAL,
name VARCHAR(255),
PRIMARY KEY (id)
);
CREATE TABLE entity_property (
entity_id SERIAL,
name VARCHAR(255),
value TEXT
);
Lorsque je tente de créer une classe EntityProperty
@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;
}
}
-je obtenir l'exception suivante:
org.hibernate.AnnotationException: No identifier specified for entity: package.EntityProperty
Je sais que les entités JPA doivent avoir une clé primaire, mais je ne peux pas modifier le schéma de base de données pour des raisons qui sont au-delà de mes cont rol. Est-il possible de créer des entités JPA (Hibernate) qui fonctionneront avec un schéma de base de données comme celui-ci?
Merci. Mais comment puis-je accéder directement à la propriété "name" de l'entité dans ce cas? Ma requête JP-QL ne fonctionne bien que si l'accès à "name" via "entity.id.name", mais je pense que ce n'est pas correct. – mikhail
@mikhail: Si vous n'aimez pas l'approche avec '@ EmbeddedId', vous pouvez essayer une approche alternative avec' @ IdClass': http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/#d0e1112 – axtavt
L'annotation pour 'EntityPropertyPK' devrait-elle être' @ Embeddedable' au lieu de '@ Embedded'? – HDoan