首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JPA:如何仅覆盖@Embedded属性的列名

JPA是Java Persistence API的缩写,是一种用于Java应用程序与数据库进行交互的API。它提供了一种标准的方式来进行对象关系映射(ORM),将Java对象映射到关系型数据库中的表。

在JPA中,@Embedded注解用于将一个对象嵌入到另一个实体类中作为属性。当使用@Embedded注解时,JPA会自动将嵌入对象的属性映射到包含它的实体类的表中。

如果想要仅覆盖@Embedded属性的列名,可以使用@AttributeOverride注解。@AttributeOverride注解可以用于覆盖@Embedded属性中的列名和属性的定义。

下面是一个示例:

代码语言:txt
复制
@Entity
public class Employee {
    @Id
    private Long id;
    
    private String name;
    
    @Embedded
    @AttributeOverrides({
        @AttributeOverride(name = "startDate", column = @Column(name = "work_start_date")),
        @AttributeOverride(name = "endDate", column = @Column(name = "work_end_date"))
    })
    private EmploymentPeriod employmentPeriod;
    
    // 省略其他属性和方法
}

@Embeddable
public class EmploymentPeriod {
    private Date startDate;
    private Date endDate;
    
    // 省略构造函数和其他方法
}

在上述示例中,Employee类中的employmentPeriod属性使用了@Embedded注解,表示它是一个嵌入对象。通过使用@AttributeOverrides注解,我们可以覆盖employmentPeriod属性中的startDate和endDate属性的列名。

这样,JPA会将Employee实体类和EmploymentPeriod嵌入对象映射到数据库表中,并使用自定义的列名"work_start_date"和"work_end_date"。

关于JPA的更多信息和详细介绍,您可以参考腾讯云数据库相关产品,如云数据库 MySQL、云数据库 PostgreSQL 等,它们都提供了JPA的支持。您可以通过访问腾讯云官网的数据库产品页面获取更多详细信息和使用指南。

请注意,上述答案未涉及亚马逊AWS、Azure、阿里云、华为云、天翼云、GoDaddy、Namecheap、Google等品牌商。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Spring中国教育管理中心-Apache Cassandra Spring 数据教程十二

这样做可以让类路径扫描器找到并预处理您域对象以提取必要元数据。使用带注释实体来执行模式操作。...此元素表示一个前缀,并附加到嵌入对象中每个列名称。请注意,如果多个属性呈现为相同列名称,则属性将相互覆盖。...@PrimaryKey: 类似于@Id但允许您指定列名。 @PrimaryKeyColumn:主键列 Cassandra 特定注释,可让您指定主键列属性,例如用于集群或分区。...描述 Cassandra 表中表示列名称,从而使名称与类字段名称不同。可用于构造函数参数以在构造函数创建期间自定义列名。 @Embedded: 应用于现场。...@Embedded注释,在这种情况下,嵌入所有属性编索引。

1.8K40
  • spring boot 中使用 jpa以及jpa介绍

    @Basic 指定非约束明确各个字段。 @Embedded 指定类或它值是一个可嵌入实例实体属性。 @Id 指定属性,用于识别(一个表中主键)。...@GeneratedValue 指定如何标识属性可以被初始化,例如自动、手动、或从序列表中获得值。 @Transient 指定属性,它是不持久,即:该值永远不会存储在数据库中。...@UniqueConstraint 指定字段和用于主要或辅助表唯一约束。 @ColumnResult 参考使用select子句SQL查询中列名。...以上我们完成了基本配置工作,记下来看一下如何进行表与实体映射,以及数据访问接口。...接下来我们来看一下如何编写自己方法。我们以根据name查询person为例。

    4.1K10

    Gorm 数据库表迁移与表模型定义

    time.Time // 列名是 `created_at` } 您可以使用 column 标签或 命名策略 来覆盖列名 type Animal struct { AnimalID int64...在使用指定数据库数据类型时,它需要是完整数据库数据类型,如:MEDIUMINT UNSIGNED not NULL AUTO_INCREMENT serializer 指定如何将数据序列化和反序列化到数据库中序列化程序...embedded 嵌入字段 embeddedPrefix 嵌入嵌入字段字段列名前缀 autoCreateTime 跟踪当前时间创建时,对于'int'字段,它将跟踪unix秒,使用值'nano/'milli..., <-:create 创建字段, <-:update 更新字段, <-:false 没有写权限, <- 创建和更新权限 -> 设置字段读权限, ->:false 没有读权限 - 忽略该字段, -...// 改了字段属性,再执行AutoMigrate,字段属性会变,设置default测试看 } 本文由博客一文多发平台 OpenWrite 发布!

    36310

    JAVA 拾遗--JPA 二三事

    记得前几个月,spring4all 社区刚搞过一次技术话题讨论:如何JPA 或者 MyBatis 进行技术选型?...使用 @Embedded 关联一对一值对象 现实世界有很多一对一关联关系,如人和身份证,订单和购买者...而在 JPA 中表达一对一关联,通常有三种方式。...使用 @Embedded 那有没有能中和上述矛盾方案呢?引出 @Embedded 这个注解。...实体一个属性;不变性,CustomerVo 一旦生成后便不可被修改,除非被整体替换) @Embedded 注解便是内嵌值对象最好表达形式。...这样好处是显而易见,对于数据库而言,它知道 String 类型如何保存;对于 Goods 使用者而言,也只关心 PicturesWrapper 格式,并不关心它如何持久化。

    2K100

    持久化DDD聚合

    在这段代码中,我们手动将 totalCost 属性设置为零,这违反了一条重要业务规则。当然,总成本不应该是零美元! 我们需要一种方法来保护我们业务规则。让我们看看聚合根是如何起作用。 2.3....4、用简单类型替换货币属性 嗯,我们需要修改Order aggregate设计以便能够使用JPA。...可以使用 @Embedded 和@ElementCollection注解,但这种方法在使用复杂对象图时可能会使事情变得复杂(例如,@Embeddable对象具有另一个@Embedded属性等)。...使用@Embedded注解只是向父表添加平面属性。除此之外,基本属性(例如字符串类型)仍然需要setter方法,这违反了预期值对象设计。...在这种情况下,我们可能结束编写JPA 2.1中可用自定义类型@Converter 。不过,这可能需要一些额外工作。 或者,我们也可以将货币属性分为两种基本属性

    1.4K20

    使用 spring data rest 快速构建 restful api,再也不用加班了

    而且也支持HTTP协议,规定了使用HTTP Method表达本次要做动作,类型一般也不超过那四五种。这些动作表达了对资源仅有的几种转化方式。...PUT(UPDATE):在服务器更新资源(客户端提供改变后完整资源)。 PATCH(UPDATE):在服务器更新资源(客户端提供改变属性)。 DELETE(DELETE):从服务器删除资源。...HEAD:获取资源元数据。 OPTIONS:获取信息,关于资源哪些属性是客户端可以改变。...GET 访问 localhost:8080/user这里我已经添加了一条数据 { "_embedded": { "users": [ {...再次访问 GET 访问 localhost:8080/user 这时可以看出 users 数量为 2 说明已经创建成功 { "_embedded": { "users": [

    4.9K20

    spring.jpa.hibernate 配置和源码解析

    创建,如果已存在将报错 drop 删除 create 删除后再创建 create-drop 先删除,SessionFactory启动时创建,SessionFactory关闭时再删除 validate 校验...update 必要时更新 truncate 清空数据 隐式命名策略 如果没有通过@Table或者@Column等注解显式指定表名、列名,将通过隐式命名策略生成对应名称 配置路径: spring.jpa.hibernate.naming.implicit-strategy...可选官方实现: 类名 说明 org.hibernate.boot.model.naming.ImplicitNamingStrategyJpaCompliantImpl 匹配JPA2.0标准实现,使用...JPA注解指派名称或者根据类名属性名。...注解 org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl 匹配JPA1.0标准实现 物理命名策略 将显式指定或隐式命名策略转换得到逻辑名称转换为数据库实际使用物理名称

    23400

    译:持久化DDD聚合

    在这段代码中,我们手动将 totalCost 属性设置为零,这违反了一条重要业务规则。当然,总成本不应该是零美元! 我们需要一种方法来保护我们业务规则。让我们看看聚合根是如何起作用。 2.3....4、用简单类型替换货币属性 嗯,我们需要修改Order aggregate设计以便能够使用JPA。...可以使用 @Embedded 和@ElementCollection注解,但这种方法在使用复杂对象图时可能会使事情变得复杂(例如,@Embeddable对象具有另一个@Embedded属性等)。...使用@Embedded注解只是向父表添加平面属性。除此之外,基本属性(例如字符串类型)仍然需要setter方法,这违反了预期值对象设计。...在这种情况下,我们可能结束编写JPA 2.1中可用自定义类型@Converter 。不过,这可能需要一些额外工作。 或者,我们也可以将货币属性分为两种基本属性

    1.7K30

    Spring Boot 2.0.0参考手册_中文版_Part III_13

    使用Spring Boot 这一节将会讲述关于应该如何使用Spring Boot更多细节。它包括许多主题例如构建系统,自动配置和怎么运行自己应用。我们也讲述一些Spring Boot最佳实践。...最后一点:由于默认配置文件采用Spring风格占位符(${…​}),Maven过滤改成了使用@..@占位符(你可以使用Maven属性resource.delimiter来覆盖)。...如果你导入额外starters,你可以安全忽略这个版本号。 有了这个设置,你也可以通过在你工程中重写一个属性覆盖单独依赖。...如果你想听从我们建议,使用更新Java版本,你可以添加java.version属性。...例如,如果你想开始使用Spring和JPA来进行数据库链接,只需要在你工程中包含spring-boot-starter-data-jpa依赖,你便可以很好前行了。

    90530

    SpringDataJPA笔记(1)-基础概念和注解

    所以JPA仅仅是一种规范,通过定义通用接口屏蔽实现层差异 spirng data jpa是spring提供一套简化JPA开发框架,可以理解为 JPA 规范再次封装抽象 二 Spring Data...AUTO: JPA自动选择合适策略,是默认选项; SEQUENCE:通过序列产生主键,通过 @SequenceGenerator 注解指定序列名,MySql 不支持这种方式 TABLE:通过表产生主键...@Column 标注常用属性是 name,用于设置映射数据库表列名。此外,该标注还包含其它多个属性,如:unique 、nullable、length 等。...从表根据主表主键列(列名为referencedColumnName值列),建立一个类型一样主键列,列名由name属性定义。...JoinColumn大部分属性和Column类似 元数据属性说明: name:列名

    3.9K20

    JPA实体类中注解

    用于表示该属性作为ID主键 @GeneratedValue   主键生成策略,@GeneratedValue(strategy=GenerationType.AUTO)表示主键自增长由实现jpa框架来控制...  标注于属性上,有很多功能,例如指定长度、是否为空,列名以及对应到数据库汇中类型等,如@Column(length,nullable,name)   例如,我们string对应到数据库中text就可以这样写...@Transient 表示该属性并非一个到数据库表字段映射,ORM框架将忽略该属性。  如果一个属性并非数据库表字段映射。就务必将其标示为@Transient。否则。...  mappedBy:表示多对多关联另一个实体类对应集合属性名称  两个实体间相互关联属性必须标记为@ManyToMany,并相互指定targetEntity属性,  需要注意是,有且只有一个实体...可以将超类JPA注解传递给子类,使子类能够继承超类JPA注解 @Embedded @Embedded将几个字段组合成一个类,并作为整个Entity一个属性.

    3.9K70
    领券