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

Hibernate 5:如何忽略@Column的命名策略?

在Hibernate 5中,可以通过使用@Column注解的name属性来指定列的名称,但是有时候我们希望忽略@Column注解的命名策略,即使用默认的命名策略。为了实现这一点,可以使用@AttributeOverride注解。

@AttributeOverride注解可以用于覆盖实体类中属性的映射信息,包括列名、类型等。通过在实体类的属性上使用@AttributeOverride注解,可以覆盖@Column注解的命名策略。

下面是一个示例:

代码语言:txt
复制
@Entity
@Table(name = "my_table")
public class MyEntity {

    @Id
    private Long id;

    @AttributeOverrides({
        @AttributeOverride(name = "firstName", column = @Column(name = "first_name")),
        @AttributeOverride(name = "lastName", column = @Column(name = "last_name"))
    })
    private Name name;

    // 其他属性和方法
}

@Embeddable
public class Name {

    private String firstName;
    private String lastName;

    // 构造方法、getter和setter等
}

在上面的示例中,MyEntity实体类中的name属性使用了@AttributeOverride注解来覆盖Name类中的firstNamelastName属性的映射信息。通过指定column属性,我们可以指定这两个属性在数据库中的列名。

这样,当Hibernate生成SQL语句时,会使用@AttributeOverride注解中指定的列名,而忽略@Column注解的命名策略。

推荐的腾讯云相关产品:腾讯云数据库MySQL、腾讯云云服务器CVM。

腾讯云数据库MySQL产品介绍链接地址:https://cloud.tencent.com/product/cdb

腾讯云云服务器CVM产品介绍链接地址:https://cloud.tencent.com/product/cvm

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

相关·内容

如何自定义 JPA 数据库命名策略

,并以下划线分隔 此外,引入 Hibernate 还提供了另外一种物理命名策略,先进行如下配置,再来观察结果: spring: datasource: username: root...物理命名策略,未定义 @Table 和 @Column 将以实体名和属性名作为表名及字段名 physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl...varchar(255), teacherId integer, primary key (id)) engine=InnoDB 以上表明,Hibernate 提供命名策略是以实体名和属性名分别作为表名及字段名...,但如果有定义 @Table 和 @Column ,则以该属性值进行映射命名 当然,某些场景下,可以通过自定义命名策略来简化操作,或实现自身特定业务,例如:假设需要为未定义 @Table 实体加上表前缀...(0))) { // 大写字母下划线分隔命名策略,有在实体字段上自定义@Column(name="Xx_Xxx") return new Identifier

1K30

如何自定义 JPA 数据库命名策略

,并以下划线分隔 此外,引入 Hibernate 还提供了另外一种物理命名策略,先进行如下配置,再来观察结果: spring: datasource: username: root...物理命名策略,未定义 @Table 和 @Column 将以实体名和属性名作为表名及字段名 physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl...varchar(255), teacherId integer, primary key (id)) engine=InnoDB 以上表明,Hibernate 提供命名策略是以实体名和属性名分别作为表名及字段名...,但如果有定义 @Table 和 @Column ,则以该属性值进行映射命名 当然,某些场景下,可以通过自定义命名策略来简化操作,或实现自身特定业务,例如:假设需要为未定义 @Table 实体加上表前缀...(0))) { // 大写字母下划线分隔命名策略,有在实体字段上自定义@Column(name="Xx_Xxx") return new Identifier

1K30

hibernate 检索方式

HQL 參数绑定由两种形式: 按參数名字绑定: 在 HQL 查询语句中定义命名參数, 命名參数以 “:” 开头. 按參数位置绑定: 在 HQL 查询语句中用 “?...在默认情况下, Query 和 Criteria 接口检索出查询结果中全部对象 在映射文件里定义命名查询语句 Hibernate 同意在映射文件里定义字符串形式查询语句....list() 方法返回集合中存放是对象数组类型 –依据配置文件来决定 Employee集合检索策略....keyword 关联级别执行时检索策略 假设在 HQL 中没有显式指定检索策略, 将使用映射文件配置检索策略....HQL 会忽略映射文件里设置迫切左外连接检索策略, 假设希望 HQL 採用迫切左外连接策略, 就必须在 HQL 查询语句中显式指定它 若在 HQL 代码中显式指定了检索策略, 就会覆盖映射文件里配置检索策略

94710

hibernate 二级缓存「建议收藏」

, 提供了丰富缓存数据过期策略, 对 Hibernate 查询缓存提供了支持 SwarmCache: 可作为集群范围内缓存, 但不支持 Hibernate 查询缓存 JBossCache:可作为集群范围内缓存..., 支持 Hibernate 查询缓存 4 种缓存插件支持并发访问策略(x 代表支持, 空白代表不支持) 配置进程范围内二级缓存 配置进程范围内二级缓存步骤: 选择合适缓存插件...: 设置缓存默认数据过期策略 设定具体命名缓存数据过期策略。...每个命名缓存代表一个缓存区域 缓存区域(region):一个具有名称缓存块,可以给每一个缓存块设置不同缓存策略。如果没有设置任何缓存区域,则所有被缓存对象,都将使用默认缓存策略。...-- 设定具体命名缓存数据过期策略。每个命名缓存代表一个缓存区域 缓存区域(region):一个具有名称缓存块,可以给每一个缓存块设置不同缓存策略

96120

Java中使用Hibernate系列之映射文件学习(第一节)

已经知道怎样把Events类对象持久化到数据库EVENTS表里,以及怎样从EVENTS表加载到Events类对象,每个实例对应着数据库表中一行;这个重点说明主键(唯一)属性如何映射到数据库表,...这里我们用Hibernate标识符生成策略来产生主键字段。...- Hibernate会使用getId()和setId()来访问它,column属性则告诉Hibernate我们使用EVENTS表哪个字段作为主键;嵌套generator元素指定了标识符生成策略,在这里我们指定...native,它根据已配置数据库(方言)自动选择最佳标识符生成策略Hibernate支持由数据库生成全局唯一性(globally unique)和应用程序指定策略来生成标识符。...网络配图 最后我们应该把这个映射文件保存为Event.hbm.xml,且就在EventJava类源文件目录下,映射文件可随意地命名,但hbm.xml后缀已成为Hibernate开发者约定;应用程序代码结构如下

85660

Hibernate 性能优化时候碰到了抓取策略,有四种

最近在研究 Hibernate 性能优化时候碰到了"抓取策略", 由于以前没有详细研究过,     所以到处找资料, 但是无论从一些讲 Hibernate 书籍,还是他人 Blog 中都没有找到详细...    介绍 Hibernate 文档中所说原汁原味抓取策略, 综合懒加载等等特性混在了一起, 所     以在这自己在借鉴了他人基础上研究了下原汁原味 Hibernate 四种"抓取策略";...这种策略是在集合抓取时候默认策略, 即如果集合需要初始化, 那么 会重新发出一条 SQL 语句进行查询; 这是集合默认抓取策略, 也就是我们常会出现 N+1次查询查询策略; 配置文件 : <hibernate-mapping...Hibernate 命名很清晰; 批量抓取(Batch fetching) 批量抓取:"对查询抓取优化方案,通过指定一个主键或外键列表,Hibernate使用 单条SELECT语句获取一批对象实例或集合...指定数量 orders 集合; [他是如何做到呢?

55890

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

create-drop 先删除,SessionFactory启动时创建,SessionFactory关闭时再删除 validate 仅校验 update 必要时更新 truncate 清空数据 隐式命名策略...如果没有通过@Table或者@Column等注解显式指定表名、列名,将通过隐式命名策略生成对应名称 配置路径: spring.jpa.hibernate.naming.implicit-strategy...匹配JPA1.0标准实现 物理命名策略 将显式指定或隐式命名策略转换得到逻辑名称转换为数据库实际使用物理名称 配置路径:spring.jpa.hibernate.naming.physical-strategy...可选官方实现: 类名 说明 org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy 将驼峰规则命名转换为下划线规则...默认为null return defaultDdlAuto.get(); } // 命名策略配置类 public static class Naming { // 应用命名策略(没有配置属性则填充默认值

4900

Hibernate 性能优化时候碰到了抓取策略,有四种

最近在研究 Hibernate 性能优化时候碰到了"抓取策略", 由于以前没有详细研究过,     所以到处找资料, 但是无论从一些讲 Hibernate 书籍,还是他人 Blog 中都没有找到详细...    介绍 Hibernate 文档中所说原汁原味抓取策略, 综合懒加载等等特性混在了一起, 所     以在这自己在借鉴了他人基础上研究了下原汁原味 Hibernate 四种"抓取策略";..., 即如果集合需要初始化, 那么 会重新发出一条 SQL 语句进行查询; 这是集合默认抓取策略, 也就是我们常会出现 N+1次查询查询策略; 配置文件 : <hibernate-mapping package...Hibernate 命名很清晰; 批量抓取(Batch fetching) 批量抓取:"对查询抓取优化方案,通过指定一个主键或外键列表,Hibernate使用 单条SELECT语句获取一批对象实例或集合...指定数量 orders 集合; [他是如何做到呢?

1.1K70

java学习:Hibernate入门

二、创建一个常规java project,命名为HelloHibernate 创建过程中,注意导入所需jar包,这些jar包可分为三大类:Hibernate解压目录中lib\required下jar...把这个连接,命名myConn后保存,这时再点击"Get Values from Connection",在弹出对话框里,就能看到刚才创建连接myConn ? ?...hibernate-configuration> 里面记录了数据库连接一些关键信息,所以hibernate运行时,就能根据这些信息,知道如何去连接db,以及如何生成sql....五、生成hibernate映射配置文件 刚才创建反向工程配置文件,在运行时其实没多大作用,它只是用来告诉hiernate如何根据表结构生成java实体类,对于已经存在java类(比如纯手写),运行时...,hibernate如何知道它对应于db中哪张表呢?

79980

SpringBoot 系列 JPA 错误姿势之 Entity 映射

本篇为 JPA 错误使用姿势第二篇,java POJO 类与数据库表结构映射关系,除了驼峰命名映射为下划线之外,还会有什么别的坑么? I. 映射问题 1....项目基本配置 首先搭建基本 springboot + jpa 项目, 我们使用 springboot 版本为2.2.1.RELEASE,mysql 版本 5+ <groupId...错误 case java 变量命名推荐是驼峰命名方式,因此与数据库中字段下划线方式需要关联映射,通过 jpa 相关知识学习,我们知道可以使用@Column注解来处理,所以有下面这种写法 @Data...") private Timestamp updateTime; } 从命名上就可以看出上面这种 case 是错误,那么到底是什么问题呢?...继承自默认PhysicalNamingStrategyStandardImpl策略,然后在字段名中,对于没有引号包裹字段名主动添加一个反引号 public class JpaNamingStrategyStandardImpl

88020

如何在 Spring Boot 中 读写数据

如何在 Spring Boot 中 读写数据 (5)@Basic 指定类变量读取方法到数据库表字段映射关系。对于没有任何特殊注解getXxxx()方法,默认带有 @Basic 注解。...策略有两种EAGER和LAZY,它们分别表示为主动读取与懒加载。默认为 EAGER。 (6)@Column 表示列说明,如果字段名与列名相同,则可以省略。 @Column 注解拥有以下属性: ?...如何在 Spring Boot 中 读写数据 cascade 属性用于指定级联策略策略 | 说明 --- | --- CascadeType.PERSIST | 级联持久化;保存父实体时,也会同时保存子实体...,字段默认命名规则为 “附属类名_附属主键”,如:password_id。...private List user; 如果不指定@JoinColumn 注解,Hibernate会自动生成一张中间表来对用户和部门进行绑定,这张中间表默认命名规则为:实体类表名_实体类中指定属性名

15.8K10

Hibernate学习笔记 单表映射

GeneratedValue表示自动生成主键,生成策略默认为AUTO,表示由Hibernate根据数据库类型自动选择合适策略。如果希望在不同数据库之间有更好可移植性,就选择默认策略。...Column将对应实体类属性映射到数据表列上,可以添加name参数自定义数据表列名。...Enumerated用来映射枚举类型,可以使用EnumType枚举定义如何映射枚举,如果是EnumType.ORDINAL,那么就会使用枚举对应数字,如果使用EnumType.STRING,就会使用枚举对应名称...Hibernate检索依据是Id注解位置,如果Id放在了方法上而其他注解放在了字段上,Hibernate就会忽略字段上所有注解,反之亦然。...代码没有给完全,主要看一看Hibernate运行模式即可。看到这里,大家应该对Hibernate有了大致了解。

33320

SpringBoot中JPA基本使用

很多网上教程使用是增加如下配置: spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect 虽然也能达到效果...,但是查看 MySQL5InnoDBDialect 类源码可以知道,此类已经被 @Deprecated 了,建议使用如下方式: 在 resources 目录下创建 hibernate.properties...,主要有TABLE、SEQUENCE、IDENTITY、AUTO这几种 @Transient 指定忽略字段,不做持久化,一般用于排除非表中字段 @Column 指定属性对应表中字段名和约束条件 @...如果主键生成策略是SEQUENCE,那么可以用这个注解来定义如何创建序列 @Basic 指定实体属性加载方式,比如@Basic(fetch = FetchType.LAZY) 2.5、自动建表 启动项目...更新数量:99 5、查询数据库 5.1、使用约定方法名查询 约定方法名一定要根据命名规范来写,JPA会根据前缀、中间连接词(Or、And、Like、NotNull等类似SQL中关键字)、内部拼接SQL

60010

SpringBoot系列教程JPA之指定id保存

又可以如何解决呢? 本文将介绍一下如何使用 JPA AUTO 保存策略来指定数据库主键 id I....Insert 教程 首先简单看一下,我们一般使用默认数据库自增生成主键使用方式,以便后面的自定义主键生成策略对比 对于 jpa 插入数据知识点不太清楚同学,可以看一下之前博文: 190614...首次执行确保数据库中不存在 id 为 20 记录,虽然我们 PO 对象中,指定了 id 为 20,但是执行完毕之后,新增数据 id 却不是 20 Hibernate: select moneypo0...sql 日志,注意插入 sql,是没有指定 id ,所以新增记录 id 就会利用 mysql 自增策略 当我们 db 中存在 id 为 20 记录时,再次执行,查看日志发现实际执行是更新数据...利用数据库自增生成主键策略) 接下来我们再次测试插入 // 使用自定义主键生成策略 AutoMoneyPO moneyPO = new AutoMoneyPO(); moneyPO.setId(20

2.9K50
领券