ID的JPA实体问题

贡萨雷斯

我正在使用JPA构建一个应用程序,我想有一个名为“ BaseEntity”的父实体,该实体具有属性ID,然后其余实体扩展了该实体,然后具有自己的属性。父类中的字段ID受保护。但是,当我启动服务器时,出现以下错误:

原因:org.hibernate.AnnotationException:未为实体指定标识符:com.fgonzalez.domainmodel.User

当然,如果我将id字段放在类User中,则可以正常工作,但这不是我想要的。奇怪的是,如果我将xml文件用于休眠映射而不是JPA,则可以正常工作,但不适用于JPA。知道哪里可能是问题吗?附上代码:

基础实体:

public class BaseEntity implements Serializable{

/**
 * 
 */
private static final long serialVersionUID = 1L;


@Id
@GeneratedValue
@Column(name="id")
protected Long id;

public Long getId() {
    return id;
}

public void setId(Long id) {
    this.id = id;
}


}

和用户实体:

@Entity
@Table(name="users")
public class User extends BaseEntity{


/**
 * 
 */
private static final long serialVersionUID = 1L;

/**
 * 
 */

@Column(name="EMAIL",nullable=false,length=50,insertable=true,updatable=true)
private String email;

@Column(name="PASSWORD",nullable=false,length=50,insertable=true,updatable=true)
private String password;



public String getEmail() {
    return email;
}
public void setEmail(String email) {
    this.email=email;
}


public String getPassword() {
    return password;
}
public void setPassword(String password) {
    this.password = password;
}

}

先感谢您!!

伊马霍罗斯

您不能以这种方式这样做:BaseEntity不是@Entity,因此甚至不应处理@Id。

如果Hibernate在使用xml时确实处理了它,那可能是不可移植的特性。

您可以实现某些实体层次结构,但是在这种情况下我不会这样做。您只能扩展一次,这看起来并不像真正的层次结构:每个类都只有一个根?

您可以在此处找到有关实体继承的更多信息:http : //docs.oracle.com/javaee/6/tutorial/doc/bnbqn.html

您可以使用合成代替继承。在这种情况下,只需使用@Embeddable注释User类(不是@Entity),并在using类上使用@EmbeddedId注释字段。

仍然,我不会这样做:看起来更干了,但是它没有更多的好处,就是用别的东西替换String到处都只是为了不重复自己(无论如何你都会这样做)。

我只有一个@Id Long id;每个实体中的字段,将它们从层次结构地狱中释放出来。它看起来更像样板,但从长远来看会更容易,没有明显的缺点。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

实体框架ID列问题

来自分类Dev

JPA实体ID-long或Long

来自分类Dev

JPA实体扩展类包含@Id

来自分类Dev

合并后获取实体JPA ID?

来自分类Dev

JPA实体扩展类包含@Id

来自分类Dev

Java Jpa查询搜索与ID相关的实体

来自分类Dev

Jpa findAllBy* 使用 Long id 而不是实体

来自分类Dev

JPA性能:实体还是实体ID作为查询参数?

来自分类Dev

Spring的数据JPA继承:创业实体ID在儿童实体

来自分类Dev

JPA-在双向映射中删除子实体的问题

来自分类Dev

Quarkus依赖注入到JPA实体管理器的问题

来自分类Dev

无法在JSON输出中获取JPA实体ID

来自分类Dev

无法在@ID @generatevalue JPA实体上接受NULL值

来自分类Dev

实体bean @Id属性填充值时的JPA

来自分类Dev

是否在JPA实体上保留随机UUID作为对象ID?

来自分类Dev

具有复合ID的JPA可嵌入实体

来自分类Dev

spring jpa - 继承实体没有获得自己的 id 列

来自分类Dev

Spring JPA - 具有相同 id 的不同实体

来自分类Dev

回滚后,JPA / Hibernate中的实体状态和实体ID值

来自分类Dev

JPA仅使用ID来引用现有实体保存“新”实体?

来自分类Dev

回滚后,JPA / Hibernate中的实体状态和实体ID值

来自分类Dev

MVC-实体框架,状态ID必须是数字问题

来自分类Dev

关于实体框架的问题:ID 是否被视为键值?

来自分类Dev

JPA ManyToMany 映射问题(无法将同一实体映射到另一个实体)

来自分类Dev

JPA信息库:将实体保存在大表中的问题-超时错误

来自分类Dev

映射具有相同`JoinColumn`的两个实体时的JPA映射问题

来自分类Dev

JPA:单例实体

来自分类Dev

JPA实体未更新

来自分类Dev

通过JPA更新实体