在创建实体时,经常有重复的id和时间的属性要创建,所以想弄一个父类,然后所有实体继承,但是碰到了问题,就用到了@MappedSuperclass,它的的用法
用在实体的继承过程中的父类上;
如:
IdEntity.java
package com.zpf.test.Entity;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;
/**
* 基础实体类
*
* @author zpf
*
*/
@MappedSuperclass
public class IdEntity implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@Column(updatable = false)
private Date createDate;
private Date modifyDate;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public Date getCreateDate() {
return createDate;
}
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
public Date getModifyDate() {
return modifyDate;
}
public void setModifyDate(Date modifyDate) {
this.modifyDate = modifyDate;
}
}
package com.zpf.test.Entity;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
* 用户实体
* @author zpf
*
*/
@Entity
@Table(name="tb_user")
public class User extends IdEntity implements Serializable{
private static final long serialVersionUID = 1L;
private String name;
private String sex;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
这样就会生成tb_user表而且包含父类属性,否则只会生成一张identity表,字段有:id,crearedate,modifydate,name,sex,age
分享到:
相关推荐
在这种情况下,`BaseEntity`可以被标记为`@MappedSuperclass`,而`User`和`Product`则分别使用`@Entity`注解。 #### 四、@ManyToOne与@OneToMany关联关系 在Hibernate中,`@ManyToOne`和`@OneToMany`用来定义实体...
本教程的初始状态是一个简单的user实体,如下所示: @Entity( " users " )export default class User extends BaseEntity { @PrimaryGeneratedColumn( " uuid " ) id: string ; @Column () name: string ; @Column ...
@MappedSuperclass public abstract class BaseEntity implements Serializable { @Column(name = "created_time") private Date createdTime; // 其他通用字段... // getter 和 setter 方法... } ``` #### ...
实体类继承 BaseEntity 并使用注解 @TableAttribute(name = "user_info",comment = "用户信息表") public class UserInfo extends BaseEntity { // 标注是自增主键 @KeyAttribute(autoIncr = true) // 标注是...
在Hibernate中配置类继承关系,我们需要在实体类上使用`@Inheritance`注解,并指定继承策略。例如,使用单表继承: ```java @Entity @Inheritance(strategy = InheritanceType.SINGLE_TABLE) @DiscriminatorColumn...
4. **持久化和查询**:现在可以像操作普通实体一样,对这些继承类进行保存、更新和查询操作。Hibernate会自动处理类型标识字段,确保正确地映射到相应的子类。 ### 性能和设计考虑 单一表继承策略具有以下优缺点:...
接下来,我们创建一个基础实体接口`BaseEntity`,这个接口定义了获取ID的方法,这是大多数数据库实体类通用的属性。例如: ```java package com.xy.entity; public interface BaseEntity { public long getId(); ...
- **持久化上下文(Persistence Context)**: 保存实体的内存状态,负责实体的生命周期管理和事务同步。 **4. JPA配置** JPA的配置可以通过XML(persistence.xml文件)或Java配置(使用@Configuration和@EntityScan...
@MappedSuperclass public abstract class BaseEntity { private Boolean deleted = false; // setter 和 getter } ``` 2. **使用@SQLDelete注解**: 在需要实现软删除的实体类上使用`@SQLDelete`注解,指定当...
在实体基类中使用泛型,我们可以定义一个通用的基类,如`BaseEntity<T>`,其中`T`代表实体的具体类型。这样,子类如`UserEntity extends BaseEntity<User>`就能自动继承并利用这个类型信息。 接下来,我们讨论反射...
集成字符串的各种处理,各种切割,各种替换
然后,我们可以创建具体的实体类,如`User`,继承自`BaseEntity<int>`: ```csharp public class User : BaseEntity { public string Name { get; set; } public string Email { get; set; } // 其他用户相关...
而万能实体类方法则是将这些共性操作抽象出来,形成一个统一的接口或基类,例如`IEntity`或`BaseEntity`。这样,无论实体类如何变化,我们只需要针对这个接口或基类编写操作,而无需为每个实体类单独写一套数据库...
4. **继承关系注解**:通过`@Inheritance`和`@DiscriminatorColumn`注解,可以实现单表继承或多表继承策略,使得子类实例的数据可以存储在同一张表或不同的表中。例如: ```java @Inheritance(strategy = ...
实体类通常继承自Hibernate的BaseEntity,包含@Id标识主键字段。 5. **HQL(Hibernate Query Language)**:这是Hibernate专有的查询语言,类似于SQL,但更面向对象。HQL可以用来查询、更新和删除实体,支持复杂的...
/// 1、所有的具体实现实体通过继承该抽象实体,以获取相应的的长整型编号值。 /// 2、为所有的具体实现实体的反射/依赖注入实例化操作,提供1个通用的抓手。 /// /// public abstract class BaseEntity { ...
- 实体类:创建与数据库表对应的实体类,通常会继承 `BaseEntity` 类,以便利用 MyBatis-Plus 提供的通用方法。 - CRUD 接口:创建 Mapper 接口,不需要编写任何 SQL,直接使用 MyBatis-Plus 提供的方法即可。 - ...
Mybatis-Plus中的实体类需要继承`BaseEntity`,并包含与数据库表字段对应的属性。同时,为每个表创建一个Mapper接口,这个接口会自动继承`BaseMapper`,无需编写任何SQL语句。 ```java import ...
public class Menu : BaseEntity { #region 属性 /// /// 【权限编号】 /// /// 摘要: /// 获取/设置权限实体1个指定实例的长整型编号值。 /// /// public long? PermissionId { get; set; } /// ...
3. 定义实体类:实体类需要继承Hibernate的BaseEntity,并通过注解或XML文件定义映射关系。 4. 创建SessionFactory:基于配置文件创建SessionFactory对象,它是线程安全的,整个应用只需要一个。 5. 获取Session:从...