没有ID的JPA实体
我有一个具有以下结构的数据库:
CREATE TABLE entity ( id SERIAL,
name VARCHAR(255),
PRIMARY KEY (id)
);
CREATE TABLE entity_property (
entity_id SERIAL,
name VARCHAR(255),
value TEXT
);
当我尝试创建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;
}
}
我得到以下异常:
org.hibernate.AnnotationException: No identifier specified for entity: package.EntityProperty
我知道JPA实体必须具有主键,但是由于无法控制的原因,我无法更改数据库架构。是否可以创建将与这样的数据库模式一起工作的JPA(hibernate)实体?
回答:
我猜您entity_property
有一个组合键(entity_id,
name),其中entity_id
的外键是entity
。如果是这样,则可以按如下所示进行映射:
@Embeddablepublic class EntityPropertyPK {
@Column(name = "name")
private String name;
@ManyToOne
@JoinColumn(name = "entity_id")
private Entity entity;
...
}
@Entity
@Table(name="entity_property")
public class EntityProperty {
@EmbeddedId
private EntityPropertyPK id;
@Column(name = "value")
private String value;
...
}
以上是 没有ID的JPA实体 的全部内容, 来源链接: utcz.com/qa/423829.html