我有一个具有以下结构的数据库:
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
。如果是这样,则可以按如下所示进行映射:
@Embeddable
public 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;
...
}
问题内容: 我想创建一个类,该类可以映射到使用JPA本机查询从数据库中提取的结果。有没有办法将没有基础表的实体映射到结果?我提到这个链接,使得它的hibernate。可以使用JPA代替吗? 这是我要为其映射结果的班级。 问题答案: JPA 2.1规范定义了将结果从本机查询返回到非实体类的方法 您应该检出标题 3.10.16.2返回非托管实例, 尤其是 3.10.16.2.2构造函数结果 使用 Sq
我想创建一个可以映射到使用JPA原生查询从数据库提取的结果的类。有没有办法将没有基础表的实体映射到结果?我提到了这个允许它Hibernate的链接。这可以用JPA来代替吗? 这是我想要映射结果的类。
问题内容: 有谁知道我该如何在hibernate状态下做到这一点: 使用JPA? EntityManager有一个contains方法,但仅此而已! 我正在编写一些代码,充当实体和会话中存储的数据之间的转换器(因此,不是存储序列化的对象,而是仅存储类名和ID)。 问题答案: 有谁知道我可以用JPA在hibernate(…)中做到这一点? JPA 1.0没有等效的功能,因此如果您坚持使用JPA 1.
问题内容: 您实体的ID是 长 (原始类型)还是 长 (对象类型)? 该ID是表的主键,在数据库中从不为“ null”。 我的同事建议使用“对象类型长”。 默认情况下,Hibernate反向工程工具会生成一个长为id的基本类型。 选择什么? 长还是长? 问题答案: 我认为使用Long更好,因为通过检查该值来检查实体是否具有持久身份是更正确的(在MySQL中,您可以将ID设置为0)。另外,像Spri
问题内容: 有一个奇怪的问题,无法弄清楚如何处理。有简单的POJO: 其余端点: 在json响应中,除了Id之外,还有其他所有字段,我需要在前端编辑/删除人员。如何配置Spring Boot来序列化ID? 这就是现在的响应: UPD具有双向hibernate映射,可能与问题有关。 问题答案: 我最近遇到了同样的问题,这是因为默认情况下是这样工作的。请参阅我的SO问题-> 在将应用程序迁移到Spri
我有一个JPA实体的类层次结构,基类是定义了一个ID的MappedSuperclass。我试图在子类中使用复合键,但这似乎不起作用