spring jpa 列名映射问题Unknown column 'redisrole0_.create_date' in 'field list',@column无效

 

在使用spring jpa 访问数据库表时,在实体类上定义的@column 会无效,

package com.lujia.domain;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;
import java.util.Date;

/**
 * @author :lujia
 * @date :2018/11/16  10:22
 */
@Entity
@Table(name = "redis_role")
public class RedisRole implements Serializable{
    private static final long serialVersionUID = -3722607639305675814L;

    @Id
    private Long id;

    /**
     * @Column  注解无效
     */
    @Column(name = "mgmtName")
    private String mgmtName;

    private String remark;
    @Column(name = "createDate")
    private Date createDate;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public String getMgmtName() {
        return mgmtName;
    }

    public void setMgmtName(String mgmtName) {
        this.mgmtName = mgmtName;
    }

    public Date getCreateDate() {
        return createDate;
    }

    public void setCreateDate(Date createDate) {
        this.createDate = createDate;
    }
}

,直接访问数据库会报异常Unknown column 'redisrole0_.create_date' in 'field list'  ,默认帮我们把列名给整成create_date这

种,所以回报异常,此时我们可以指定他的naming strategry ,  

PhysicalNamingStrategyStandardImpl 类里面,会直接使用字段名和列名映射,就行了

网上有些资料说的是指定这个属性,jpa:hibernate:naming:strategy: org.hibernate.cfg.ImprovedNamingStrategy

然后扩展ImprovedNamingStrategy 类,但是我试了,好像是不行的,不知道是不是我的方法不正确

 
 
spring:
 
  jpa:
    database: MySQL
    show-sql: true
    hibernate:
      naming:
        physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
/*
 * Hibernate, Relational Persistence for Idiomatic Java
 *
 * License: GNU Lesser General Public License (LGPL), version 2.1 or later.
 * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
 */
package org.hibernate.boot.model.naming;

import java.io.Serializable;

import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment;

/**
 * Standard implementation of the PhysicalNamingStrategy contract.
 *
 * @author Steve Ebersole
 */
public class PhysicalNamingStrategyStandardImpl implements PhysicalNamingStrategy, Serializable {
	/**
	 * Singleton access
	 */
	public static final PhysicalNamingStrategyStandardImpl INSTANCE = new PhysicalNamingStrategyStandardImpl();

	@Override
	public Identifier toPhysicalCatalogName(Identifier name, JdbcEnvironment context) {
		return name;
	}

	@Override
	public Identifier toPhysicalSchemaName(Identifier name, JdbcEnvironment context) {
		return name;
	}

	@Override
	public Identifier toPhysicalTableName(Identifier name, JdbcEnvironment context) {
		return name;
	}

	@Override
	public Identifier toPhysicalSequenceName(Identifier name, JdbcEnvironment context) {
		return name;
	}

	@Override
	public Identifier toPhysicalColumnName(Identifier name, JdbcEnvironment context) {
		return name;
	}
}

 

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值