Jpa——映射顶层的实体类

首先看一下最顶层的父类EmployeeEO,代码如下所示。

 

EmployeeEO

@Entity

@Table(name = "tb_employee")

/**继承映射策略*/

@Inheritance(strategy=InheritanceType.SINGLE_TABLE)

/**标识字段定义*/

@DiscriminatorColumn(

name="employee_type",discriminatorType=DiscriminatorType.STRING

)

/**该类的标识*/

@DiscriminatorValue("employee")

public class EmployeeEO implements Serializable {

        

         private Integer id;

         private String name;

        

         @Id

         @GeneratedValue(strategy = GenerationType.AUTO)

         public Integer getId() {

                   return id;

         }

         public void setId(Integer id) {

                   this.id = id;

         }

         public String getName() {

                   return name;

         }

         public void setName(String name) {

                   this.name = name;

         }

}

在最顶层的父类中,通常要做以下映射:

l         使用@Entity注释,标识该类以及所有的子类都映射到指定的表中,如果不标注,也可使用默认值。

l         使用@Inheritance注释,标识该类的子类继承映射的方式,该注释的定义如一下所示:

@Target({TYPE}) @Retention(RUNTIME)

public @interface Inheritance {

InheritanceType strategy() default SINGLE_TABLE;

}

其中,InheritanceType有三种类型,即7.4.2小节中讲述的三种类型,三种类型定义为常量,默认为SINGLE_TABLE。

public enum InheritanceType

{ SINGLE_TABLE, JOINED, TABLE_PER_CLASS };

SINGLE_TABLE表示继承关系的实体保存在一个表;JOINED表示每个实体子类保存在一个表;TABLE_PER_CLASS表示每个实体类保存在一个表。这里使用的是第一种策略,所以定义的代码如下所示:

@Inheritance(strategy=InheritanceType.SINGLE_TABLE)

l         使用@DiscriminatorColumn注释,标识改继承层次上所区别每个实体的类型字段。它的定义如以下所示:

@Target({TYPE}) @Retention(RUNTIME)

public @interface DiscriminatorColumn {

String name() default "DTYPE";

DiscriminatorType discriminatorType() default STRING;

String columnDefinition() default "";

int length() default 31;

}

其中,@DiscriminatorColumn在使用时要注意以下这些问题。

(1)@DiscriminatorColumn只能标注在顶层的类中,而不能标注在子类中。

(2)@DiscriminatorColumn只在继承策略为“SINGLE_TABLE”和“JOINED”时使用。

(3)name属性表示所标识具体类型的字段名称,默认为“DTYPE”,例如本例中使用的是字段“employee_type”,所以定义如下。

@DiscriminatorColumn(name="employee_type")

(4)discriminatorType属性表示标识值的类型,默认为STRING字符串。它使用的枚举类型如下所示。

public enum DiscriminatorType { STRING, CHAR, INTEGER };

也就是说,标识值可以为String、Char或者Integer

(5)columnDefinition属性表示生成字段的DDL语句,与@Column中的columnDefinition属性类似。

(6)length属性表示为标识值的长度,默认为31。该属性只在使用DiscriminatorType. STRING时才需要设置。

l         使用@DiscriminatorValue注释,标注该实体类所实体标识字段的值,它的定义如下:

@Target({TYPE}) @Retention(RUNTIME)

public @interface DiscriminatorValue {

String value();

}

value的值表示所该实体的标注值。例如,标识字段“employee_type”的值为“employee”时可以认为是EmployeeEO实体。代码设置如下所示:

@DiscriminatorValue("employee")

文章出处:http://www.diybl.com/course/3_program/java/javaxl/2008513/115643.html

内容概要:本文详细阐述了DeepSeek大模型在服装行业的应用方案,旨在通过人工智能技术提升服装企业的运营效率和市场竞争力。文章首先介绍了服装行业的现状与挑战,指出传统模式难以应对复杂的市场变化。DeepSeek大模型凭借其强大的数据分析和模式识别能力,能够精准预测市场趋势、优化供应链管理、提升产品设计效率,并实现个性化推荐。具体应用场景包括设计灵感生成、自动化设计、虚拟试衣、需求预测、生产流程优化、精准营销、智能客服、用户体验提升等。此外,文章还探讨了数据安全与隐私保护的重要性,以及技术实施与集成的具体步骤。最后,文章展望了未来市场扩展和技术升级的方向,强调了持续优化和合作的重要性。 适用人群:服装行业的企业管理层、技术负责人、市场和销售团队、供应链管理人员。 使用场景及目标:①通过市场趋势预测和用户偏好分析,提升设计效率和产品创新;②优化供应链管理,减少库存积压和生产浪费;③实现精准营销,提高客户满意度和转化率;④通过智能客服和虚拟试衣技术,提升用户体验;⑤确保数据安全和隐私保护,建立用户信任。 阅读建议:此资源不仅涵盖技术实现的细节,还涉及业务流程的优化和管理策略的调整,建议读者结合实际业务需求,重点关注与自身工作相关的部分,并逐步推进技术的应用和创新。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值