首页
学习
活动
专区
工具
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

1.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

    1.1K30

    hibernate 检索方式

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

    98210

    hibernate 二级缓存「建议收藏」

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

    1K20

    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开发者的约定;应用程序的代码结构如下

    88960

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

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

    58090

    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 { // 应用命名策略(没有配置属性则填充默认值

    29100

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

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

    1.2K70

    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中哪张表呢?

    83880

    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

    1.2K20

    如何在 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.9K10

    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

    1.4K10

    Hibernate学习笔记 单表映射

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

    36120

    Hibernate的核心对象关系映射

    :     hibernate-mapping package="com.bie.po"> hibernate-mapping>   2:第二掌握如何映射某一个对象,以及class里面主键和普通字段的设置...:自增长,一般不用(会有并发访问的问题,一般在服务器集群环境使用会存在问题)                  assigned:指定主键生成策略为手动指定主键的值                  uuid...(2)联合主键的创建: create table person2(         name VARCHAR(20),         age INT,         sex VARCHAR(5)...www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> 5 6 Hibernate,掌握映射核心知识,让老板给你升职加薪!!!~..~ 最后讲解一下如何查看Hibernate的api哦,很实用的哦~..~ ?

    1.9K60
    领券