问题一:
如果实体继承一个超类,在持久化时报:org.hibernate.AnnotationException: No identifier specified for entity。。。
经查找,原因是继承的问题,应在超类上加注:@MappedSuperclass
问题二:
实体继承一个超类,持久化时没有任何异常,但对象并没有保存。
这是可能是超类不是抽象的。必须将被继承的超类声明为abstract.
@MappedSuperclass
public abstract class BaseEntity implements Serializable {
// pk
protected String id;
@Id
@GenericGenerator(name = "generator", strategy = "uuid")
@GeneratedValue(generator = "generator")
@Column(name = "ID", unique = true, nullable = false, length = 32)
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
final BaseEntity other = (BaseEntity) obj;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
return true;
}
@Override
public String toString() {
String name = this.getClass().getName();
if (id == null) {
return name + "(Unpersisted Entity)";
} else {
return name + "(id=" + id.toString() + ")";
}
}
}
分享到:
相关推荐
Hibernate 注解映射是 Hibernate 框架中的一种映射方式,它使用 Java 注解来描述实体类和数据库表之间的映射关系,提高开发效率。 一、 环境搭建和基本映射 在使用 Hibernate 注解映射之前,需要添加相关的 jar 包...
poi导出导入封装(使用注解建立实体与excel映射关系+反射设置实体属性值), poi导出导入封装(使用注解建立实体与excel映射关系+反射设置实体属性值) poi导出导入封装(使用注解建立实体与excel映射关系+反射设置...
但有时候,根据项目需求,可能需要同时使用XML和注解映射。在这种情况下,我们需要进行一些特殊配置来实现这一目标。 首先,让我们理解Spring框架如何与Hibernate集成。Spring提供了`LocalSessionFactoryBean`用于...
本篇文章将详细探讨在Hibernate中如何使用注解来处理各种关联关系,特别是`mappedBy`属性的用法。 首先,`@OneToMany`注解用于表示一对多的关联关系,比如一个班级可以有多个学生。在单向关联中,我们通常在拥有...
在“注解框架实体类映射”中,我们通常指的是使用Java注解来定义实体类与数据库表之间的关系。这种方式避免了传统的XML配置文件,使得代码更加简洁且易于维护。Hibernate支持多种注解,如@Entity表示该类为数据库表...
MyBatis注解配置映射器是MyBatis框架中的一种简化XML配置的手段,它允许开发者在Java类或接口上直接使用注解来定义SQL语句和映射规则。在一对一关系的实现中,MyBatis注解可以帮助我们轻松处理两个实体类之间的一对...
在Hibernate中,有三种主要的注解方式来映射联合主键,以下是对这三种方式的详细解释: 1. **使用`@Embeddable`和`@Id`** 在这种映射方式中,联合主键的字段被放在一个单独的类中,这个类需要实现`java.io....
在JavaBean中使用注解,可以极大地简化对象与数据库之间的映射,使得数据访问更加便捷。这种技术通常在Java持久层框架如Hibernate或MyBatis中被广泛应用。 1. **注解的优势**: - **简化代码**:使用注解,开发者...
"Java使用注解拼接SQL语句"是一个常见的实践,它使得动态构建SQL查询变得更为简洁和可维护。这种技术通常与ORM(对象关系映射)框架如MyBatis或Hibernate结合使用,但也可以通过自定义处理逻辑实现。 1. **自定义...
在MyBatis中,我们可以使用注解在接口方法上直接定义SQL语句,这种方式简洁且易于理解。例如,我们可以在Mapper接口中使用`@Select`、`@Insert`、`@Update`和`@Delete`注解分别对应SQL的查询、插入、更新和删除操作...
本文将详细介绍如何利用Hibernate逆向生成实体类的方法,包括通过注解映射以及hbm.xml文件映射两种方式。 #### 一、环境准备与配置 1. **安装并配置MyEclipse**: - 安装MyEclipse,并确保已安装Hibernate插件。 ...
本文将深入探讨如何使用MyBatis的注解配置来实现一对多关系映射,以此来提高开发效率并减少代码冗余。 首先,我们需要理解一对多关系的概念。在数据库设计中,一对多关系表示一个表中的记录可以对应另一个表中的多...
本主题聚焦于“Hibernate双向一对一关联映射”的注解实现,这是一种高级的数据库设计模式,用于处理两个实体之间一对一的关系。 在Hibernate中,一对一关联映射分为单向和双向。单向一对一映射通常涉及一个实体持有...
通过使用注解来定义这些映射规则,开发者可以更加灵活地管理实体之间的关系。本文将详细探讨Hibernate中的各种关系映射级别的注解及其应用场景。 ### 一对一单向外键关系映射 在一对一单向外键关系中,两个实体...
基于注解的路由映射是一种高效且灵活的方法,它允许开发者在编译时通过注解定义路由规则,而不是在运行时动态解析。本方案是“Android-一个以注解方式实现的路由映射解决方案”,基于source_gen库,它在构建过程中...
综上所述,Hibernate的一对一关联映射通过注解方式提供了便捷的数据库表与Java对象之间的绑定,理解并正确使用这些注解对于优化数据访问性能、保证数据一致性至关重要。在设计数据库模型时,应充分考虑实体之间的...
本文将介绍 Spring 2.5 新增的 Spring MVC 注解功能,讲述如何使用注解配置替换传统的基于 XML 的 Spring MVC 配置。 Spring MVC 注解驱动 在 Spring 2.5 中,Spring MVC 框架引入了注解驱动功能,使得开发者可以...
2. **注解基础**:在Hibernate 3.2版本之后,引入了注解支持,使得无需XML配置文件,开发者可以直接在类和属性上使用注解来定义映射规则。常见的注解包括@Entity、@Table、@Id、@GeneratedValue等。 3. **实体类...
本文将深入探讨如何使用MyBatis的注解配置SQL映射器,以便进行基本的增删改查操作。这在中小型项目中尤其常见,因为它降低了XML配置的复杂性,提高了代码的可读性和维护性。 首先,让我们了解MyBatis注解的基本概念...
在这个“hibernate双向多对多关联映射(注解版)”的主题中,我们将深入探讨如何使用Hibernate的注解配置来处理数据库中的双向多对多关联关系。 首先,多对多关联在数据库设计中是指两个实体之间存在多个对应关系,...