Hibernate @Column注释不起作用

时间:2017-01-19 03:04:16

标签: sql-server hibernate jpa spring-boot

我hava SqlServer 2008数据库服务器,我使用spring boot + jpa(hibernate)来访问数据库。

我已经将@Column注释添加到实体属性访问方法,例如:

@Basic
@Column(name = "AdminPickDate", nullable = true)
public Timestamp getAdminPickDate() {
    return adminPickDate;
}

hibernate sql输出显示列名不使用注释@Colume中的名称。

Sql输出:

Hibernate: select ddforumart0_.articleid as articlei1_95_0_, ddforumart0_.admin_pick_date as admin_pi2_95_0_, ddforumart0_.article_title as article_3_95_0_, ddforumart0_.article_type as article_4_95_0_, ddforumart0_.at_who as at_who5_95_0_, ddforumart0_.brief as brief6_95_0_, ddforumart0_.classifyid as classify7_95_0_, ddforumart0_.classify_title as classify8_95_0_, ddforumart0_.come_from as come_fro9_95_0_, ddforumart0_.comment_count as comment10_95_0_, ddforumart0_.comment_date as comment11_95_0_, ddforumart0_.comment_enable as comment12_95_0_, ddforumart0_.config as config13_95_0_, ddforumart0_.content as content14_95_0_, ddforumart0_.create_by as create_15_95_0_, ddforumart0_.create_date as create_16_95_0_, ddforumart0_.del_flag as del_fla17_95_0_, ddforumart0_.img_url as img_url18_95_0_, ddforumart0_.is_anonymous as is_anon19_95_0_, ddforumart0_.is_del_allow as is_del_20_95_0_, ddforumart0_.is_hot as is_hot21_95_0_, ddforumart0_.isqa as isqa22_95_0_, ddforumart0_.is_top as is_top23_95_0_, ddforumart0_.like_count as like_co24_95_0_, ddforumart0_.modify_by as modify_25_95_0_, ddforumart0_.modify_date as modify_26_95_0_, ddforumart0_.pick_date as pick_da27_95_0_, ddforumart0_.plateid as plateid28_95_0_, ddforumart0_.plate_title as plate_t29_95_0_, ddforumart0_.qatype as qatype30_95_0_, ddforumart0_.tags as tags31_95_0_, ddforumart0_.user_code as user_co32_95_0_, ddforumart0_.user_infoid as user_in33_95_0_, ddforumart0_.user_name as user_na34_95_0_, ddforumart0_.view_count as view_co35_95_0_ from dd_forum_article ddforumart0_ where ddforumart0_.articleid=?

我的代码中是否存在错误用法?

我的pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.didi.home.dao</groupId>
    <artifactId>didi-home-dao</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>didi-home-dao</name>
    <description>didi home data producer</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.4.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>com.didi.home.model</groupId>
            <artifactId>didi-home-model</artifactId>
            <version>1.0.0-SNAPSHOT</version>
        </dependency>

        <dependency>
            <groupId>com.microsoft.sqlserver</groupId>
            <artifactId>sqljdbc4</artifactId>
            <version>4.0</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>

application.yml

spring:
  datasource:
    url: jdbc:sqlserver://1.2.3.4:1433;databaseName=DB_DiDiWeb
    username: u
    password: mypwd
  jpa:
    show-sql: true
    hibernate:
      naming:
#        strategy: org.hibernate.cfg.EJB3NamingStrategy
#        strategy: org.hibernate.cfg.DefaultComponentSafeNamingStrategy
#        strategy: org.hibernate.cfg.DefaultNamingStrategy
#        strategy: org.hibernate.cfg.ImprovedNamingStrategy
#        strategy: org.springframework.boot.orm.jpa.hibernate.SpringNamingStrategy

这是一个演示存储库:DdForumArticleRepository

package com.my.home.dao;

import com.didi.home.model.DdForumArticle;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Component;

/**
 * Created by jacks808@163.com on 2017/1/13.
 */
@Component
public interface DdForumArticleRepository extends JpaRepository<DdForumArticle, Integer> {
}

实体代码:

package com.didi.home.model;

import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.sql.Timestamp;

/**
 * Created by jacks808@163.com on 2017/1/13.
 */
// , schema = "dbo", catalog = "DB_DiDiWeb"
@Entity
@Table(name = "DD_Forum_Article")
public class DdForumArticle {
    private int articleId;
    private Integer articleType;
    private String articleTitle;
    private String content;
    private String brief;
    private String atWho;
    private String imgUrl;
    private String tags;
    private String config;
    private Integer viewCount;
    private Integer likeCount;
    private Integer commentCount;
    private Integer commentEnable;
    private Timestamp commentDate;
    private Integer isHot;
    private Integer isTop;
    private Integer isQa;
    private String qaType;
    private Timestamp pickDate;
    private Timestamp adminPickDate;
    private Integer plateId;
    private String plateTitle;
    private Integer classifyId;
    private String classifyTitle;
    private Integer userInfoId;
    private String userName;
    private String userCode;
    private Integer delFlag;
    private String createBy;
    private Timestamp createDate;
    private String modifyBy;
    private Timestamp modifyDate;
    private Integer isAnonymous;
    private Integer isDelAllow;
    private String comeFrom;

    @Id
    @Column(name = "ArticleID", nullable = false)
    public int getArticleId() {
        return articleId;
    }

    public void setArticleId(int articleId) {
        this.articleId = articleId;
    }

    @Basic
    @Column(name = "ArticleType", nullable = true)
    public Integer getArticleType() {
        return articleType;
    }

    public void setArticleType(Integer articleType) {
        this.articleType = articleType;
    }

    @Basic
    @Column(name = "ArticleTitle", nullable = true, length = 100)
    public String getArticleTitle() {
        return articleTitle;
    }

    public void setArticleTitle(String articleTitle) {
        this.articleTitle = articleTitle;
    }

    @Basic
    @Column(name = "Content", nullable = true, length = 2147483647)
    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    @Basic
    @Column(name = "Brief", nullable = true, length = 255)
    public String getBrief() {
        return brief;
    }

    public void setBrief(String brief) {
        this.brief = brief;
    }

    @Basic
    @Column(name = "AtWho", nullable = true, length = 2147483647)
    public String getAtWho() {
        return atWho;
    }

    public void setAtWho(String atWho) {
        this.atWho = atWho;
    }

    @Basic
    @Column(name = "ImgUrl", nullable = true, length = 2147483647)
    public String getImgUrl() {
        return imgUrl;
    }

    public void setImgUrl(String imgUrl) {
        this.imgUrl = imgUrl;
    }

    @Basic
    @Column(name = "Tags", nullable = true, length = 255)
    public String getTags() {
        return tags;
    }

    public void setTags(String tags) {
        this.tags = tags;
    }

    @Basic
    @Column(name = "Config", nullable = true, length = 2147483647)
    public String getConfig() {
        return config;
    }

    public void setConfig(String config) {
        this.config = config;
    }

    @Basic
    @Column(name = "ViewCount", nullable = true)
    public Integer getViewCount() {
        return viewCount;
    }

    public void setViewCount(Integer viewCount) {
        this.viewCount = viewCount;
    }

    @Basic
    @Column(name = "LikeCount", nullable = true)
    public Integer getLikeCount() {
        return likeCount;
    }

    public void setLikeCount(Integer likeCount) {
        this.likeCount = likeCount;
    }

    @Basic
    @Column(name = "CommentCount", nullable = true)
    public Integer getCommentCount() {
        return commentCount;
    }

    public void setCommentCount(Integer commentCount) {
        this.commentCount = commentCount;
    }

    @Basic
    @Column(name = "CommentEnable", nullable = true)
    public Integer getCommentEnable() {
        return commentEnable;
    }

    public void setCommentEnable(Integer commentEnable) {
        this.commentEnable = commentEnable;
    }

    @Basic
    @Column(name = "CommentDate", nullable = true)
    public Timestamp getCommentDate() {
        return commentDate;
    }

    public void setCommentDate(Timestamp commentDate) {
        this.commentDate = commentDate;
    }

    @Basic
    @Column(name = "IsHot", nullable = true)
    public Integer getIsHot() {
        return isHot;
    }

    public void setIsHot(Integer isHot) {
        this.isHot = isHot;
    }

    @Basic
    @Column(name = "IsTop", nullable = true)
    public Integer getIsTop() {
        return isTop;
    }

    public void setIsTop(Integer isTop) {
        this.isTop = isTop;
    }

    @Basic
    @Column(name = "IsQA", nullable = true)
    public Integer getIsQa() {
        return isQa;
    }

    public void setIsQa(Integer isQa) {
        this.isQa = isQa;
    }

    @Basic
    @Column(name = "QAType", nullable = true, length = 10)
    public String getQaType() {
        return qaType;
    }

    public void setQaType(String qaType) {
        this.qaType = qaType;
    }

    @Basic
    @Column(name = "PickDate", nullable = true)
    public Timestamp getPickDate() {
        return pickDate;
    }

    public void setPickDate(Timestamp pickDate) {
        this.pickDate = pickDate;
    }

    @Basic
    @Column(name = "AdminPickDate", nullable = true)
    public Timestamp getAdminPickDate() {
        return adminPickDate;
    }

    public void setAdminPickDate(Timestamp adminPickDate) {
        this.adminPickDate = adminPickDate;
    }

    @Basic
    @Column(name = "PlateID", nullable = true)
    public Integer getPlateId() {
        return plateId;
    }

    public void setPlateId(Integer plateId) {
        this.plateId = plateId;
    }

    @Basic
    @Column(name = "PlateTitle", nullable = true, length = 32)
    public String getPlateTitle() {
        return plateTitle;
    }

    public void setPlateTitle(String plateTitle) {
        this.plateTitle = plateTitle;
    }

    @Basic
    @Column(name = "ClassifyID", nullable = true)
    public Integer getClassifyId() {
        return classifyId;
    }

    public void setClassifyId(Integer classifyId) {
        this.classifyId = classifyId;
    }

    @Basic
    @Column(name = "ClassifyTitle", nullable = true, length = 32)
    public String getClassifyTitle() {
        return classifyTitle;
    }

    public void setClassifyTitle(String classifyTitle) {
        this.classifyTitle = classifyTitle;
    }

    @Basic
    @Column(name = "UserInfoID", nullable = true)
    public Integer getUserInfoId() {
        return userInfoId;
    }

    public void setUserInfoId(Integer userInfoId) {
        this.userInfoId = userInfoId;
    }

    @Basic
    @Column(name = "UserName", nullable = true, length = 32)
    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    @Basic
    @Column(name = "UserCode", nullable = true, length = 32)
    public String getUserCode() {
        return userCode;
    }

    public void setUserCode(String userCode) {
        this.userCode = userCode;
    }

    @Basic
    @Column(name = "DelFlag", nullable = true)
    public Integer getDelFlag() {
        return delFlag;
    }

    public void setDelFlag(Integer delFlag) {
        this.delFlag = delFlag;
    }

    @Basic
    @Column(name = "CreateBy", nullable = true, length = 32)
    public String getCreateBy() {
        return createBy;
    }

    public void setCreateBy(String createBy) {
        this.createBy = createBy;
    }

    @Basic
    @Column(name = "CreateDate", nullable = true)
    public Timestamp getCreateDate() {
        return createDate;
    }

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

    @Basic
    @Column(name = "ModifyBy", nullable = true, length = 32)
    public String getModifyBy() {
        return modifyBy;
    }

    public void setModifyBy(String modifyBy) {
        this.modifyBy = modifyBy;
    }

    @Basic
    @Column(name = "ModifyDate", nullable = true)
    public Timestamp getModifyDate() {
        return modifyDate;
    }

    public void setModifyDate(Timestamp modifyDate) {
        this.modifyDate = modifyDate;
    }

    @Basic
    @Column(name = "IsAnonymous", nullable = true)
    public Integer getIsAnonymous() {
        return isAnonymous;
    }

    public void setIsAnonymous(Integer isAnonymous) {
        this.isAnonymous = isAnonymous;
    }

    @Basic
    @Column(name = "IsDelAllow", nullable = true)
    public Integer getIsDelAllow() {
        return isDelAllow;
    }

    public void setIsDelAllow(Integer isDelAllow) {
        this.isDelAllow = isDelAllow;
    }

    @Basic
    @Column(name = "ComeFrom", nullable = true, length = 32)
    public String getComeFrom() {
        return comeFrom;
    }

    public void setComeFrom(String comeFrom) {
        this.comeFrom = comeFrom;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        DdForumArticle that = (DdForumArticle) o;

        if (articleId != that.articleId) return false;
        if (articleType != null ? !articleType.equals(that.articleType) : that.articleType != null) return false;
        if (articleTitle != null ? !articleTitle.equals(that.articleTitle) : that.articleTitle != null) return false;
        if (content != null ? !content.equals(that.content) : that.content != null) return false;
        if (brief != null ? !brief.equals(that.brief) : that.brief != null) return false;
        if (atWho != null ? !atWho.equals(that.atWho) : that.atWho != null) return false;
        if (imgUrl != null ? !imgUrl.equals(that.imgUrl) : that.imgUrl != null) return false;
        if (tags != null ? !tags.equals(that.tags) : that.tags != null) return false;
        if (config != null ? !config.equals(that.config) : that.config != null) return false;
        if (viewCount != null ? !viewCount.equals(that.viewCount) : that.viewCount != null) return false;
        if (likeCount != null ? !likeCount.equals(that.likeCount) : that.likeCount != null) return false;
        if (commentCount != null ? !commentCount.equals(that.commentCount) : that.commentCount != null) return false;
        if (commentEnable != null ? !commentEnable.equals(that.commentEnable) : that.commentEnable != null)
            return false;
        if (commentDate != null ? !commentDate.equals(that.commentDate) : that.commentDate != null) return false;
        if (isHot != null ? !isHot.equals(that.isHot) : that.isHot != null) return false;
        if (isTop != null ? !isTop.equals(that.isTop) : that.isTop != null) return false;
        if (isQa != null ? !isQa.equals(that.isQa) : that.isQa != null) return false;
        if (qaType != null ? !qaType.equals(that.qaType) : that.qaType != null) return false;
        if (pickDate != null ? !pickDate.equals(that.pickDate) : that.pickDate != null) return false;
        if (adminPickDate != null ? !adminPickDate.equals(that.adminPickDate) : that.adminPickDate != null)
            return false;
        if (plateId != null ? !plateId.equals(that.plateId) : that.plateId != null) return false;
        if (plateTitle != null ? !plateTitle.equals(that.plateTitle) : that.plateTitle != null) return false;
        if (classifyId != null ? !classifyId.equals(that.classifyId) : that.classifyId != null) return false;
        if (classifyTitle != null ? !classifyTitle.equals(that.classifyTitle) : that.classifyTitle != null)
            return false;
        if (userInfoId != null ? !userInfoId.equals(that.userInfoId) : that.userInfoId != null) return false;
        if (userName != null ? !userName.equals(that.userName) : that.userName != null) return false;
        if (userCode != null ? !userCode.equals(that.userCode) : that.userCode != null) return false;
        if (delFlag != null ? !delFlag.equals(that.delFlag) : that.delFlag != null) return false;
        if (createBy != null ? !createBy.equals(that.createBy) : that.createBy != null) return false;
        if (createDate != null ? !createDate.equals(that.createDate) : that.createDate != null) return false;
        if (modifyBy != null ? !modifyBy.equals(that.modifyBy) : that.modifyBy != null) return false;
        if (modifyDate != null ? !modifyDate.equals(that.modifyDate) : that.modifyDate != null) return false;
        if (isAnonymous != null ? !isAnonymous.equals(that.isAnonymous) : that.isAnonymous != null) return false;
        if (isDelAllow != null ? !isDelAllow.equals(that.isDelAllow) : that.isDelAllow != null) return false;
        if (comeFrom != null ? !comeFrom.equals(that.comeFrom) : that.comeFrom != null) return false;

        return true;
    }

    @Override
    public int hashCode() {
        int result = articleId;
        result = 31 * result + (articleType != null ? articleType.hashCode() : 0);
        result = 31 * result + (articleTitle != null ? articleTitle.hashCode() : 0);
        result = 31 * result + (content != null ? content.hashCode() : 0);
        result = 31 * result + (brief != null ? brief.hashCode() : 0);
        result = 31 * result + (atWho != null ? atWho.hashCode() : 0);
        result = 31 * result + (imgUrl != null ? imgUrl.hashCode() : 0);
        result = 31 * result + (tags != null ? tags.hashCode() : 0);
        result = 31 * result + (config != null ? config.hashCode() : 0);
        result = 31 * result + (viewCount != null ? viewCount.hashCode() : 0);
        result = 31 * result + (likeCount != null ? likeCount.hashCode() : 0);
        result = 31 * result + (commentCount != null ? commentCount.hashCode() : 0);
        result = 31 * result + (commentEnable != null ? commentEnable.hashCode() : 0);
        result = 31 * result + (commentDate != null ? commentDate.hashCode() : 0);
        result = 31 * result + (isHot != null ? isHot.hashCode() : 0);
        result = 31 * result + (isTop != null ? isTop.hashCode() : 0);
        result = 31 * result + (isQa != null ? isQa.hashCode() : 0);
        result = 31 * result + (qaType != null ? qaType.hashCode() : 0);
        result = 31 * result + (pickDate != null ? pickDate.hashCode() : 0);
        result = 31 * result + (adminPickDate != null ? adminPickDate.hashCode() : 0);
        result = 31 * result + (plateId != null ? plateId.hashCode() : 0);
        result = 31 * result + (plateTitle != null ? plateTitle.hashCode() : 0);
        result = 31 * result + (classifyId != null ? classifyId.hashCode() : 0);
        result = 31 * result + (classifyTitle != null ? classifyTitle.hashCode() : 0);
        result = 31 * result + (userInfoId != null ? userInfoId.hashCode() : 0);
        result = 31 * result + (userName != null ? userName.hashCode() : 0);
        result = 31 * result + (userCode != null ? userCode.hashCode() : 0);
        result = 31 * result + (delFlag != null ? delFlag.hashCode() : 0);
        result = 31 * result + (createBy != null ? createBy.hashCode() : 0);
        result = 31 * result + (createDate != null ? createDate.hashCode() : 0);
        result = 31 * result + (modifyBy != null ? modifyBy.hashCode() : 0);
        result = 31 * result + (modifyDate != null ? modifyDate.hashCode() : 0);
        result = 31 * result + (isAnonymous != null ? isAnonymous.hashCode() : 0);
        result = 31 * result + (isDelAllow != null ? isDelAllow.hashCode() : 0);
        result = 31 * result + (comeFrom != null ? comeFrom.hashCode() : 0);
        return result;
    }
}

测试代码:

package com.didi.home.dao;

import com.didi.home.model.DdForumArticle;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

/**
 * Created by jacks808@163.com on 2017/1/13.
 */
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = Application.class)
public class DdForumArticleRepositoryTest {

    @Autowired
    DdForumArticleRepository repository;

    @Test
    public void test() {
        DdForumArticle one = repository.findOne(52);
        System.out.println(one);
    }
}

异常堆栈跟踪:

Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Invalid Column name 'admin_pick_date'
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1515)
    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:404)
    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:350)
    at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:180)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:155)
    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeQuery(SQLServerPreparedStatement.java:285)
    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:70)
    ... 81 more

编辑:添加表架构

CREATE TABLE [dbo].[DD_Forum_Article] (
    [ArticleID] int IDENTITY(1,1) NOT NULL,
    [ArticleType] int NULL,
    [ArticleTitle] nvarchar(100) COLLATE Chinese_PRC_CI_AS NULL,
    [Content] nvarchar(max) COLLATE Chinese_PRC_CI_AS NULL,
    [Brief] nvarchar(255) COLLATE Chinese_PRC_CI_AS NULL,
    [AtWho] nvarchar(max) COLLATE Chinese_PRC_CI_AS NULL,
    [ImgUrl] nvarchar(max) COLLATE Chinese_PRC_CI_AS NULL,
    [Tags] nvarchar(255) COLLATE Chinese_PRC_CI_AS NULL,
    [Config] nvarchar(max) COLLATE Chinese_PRC_CI_AS NULL,
    [ViewCount] int NULL,
    [LikeCount] int NULL,
    [CommentCount] int NULL,
    [CommentEnable] int NULL,
    [CommentDate] datetime NULL,
    [IsHot] int NULL,
    [IsTop] int NULL,
    [IsQA] int NULL,
    [QAType] varchar(10) COLLATE Chinese_PRC_CI_AS NULL,
    [PickDate] datetime NULL,
    [AdminPickDate] datetime NULL,
    [PlateID] int NULL,
    [PlateTitle] nvarchar(32) COLLATE Chinese_PRC_CI_AS NULL,
    [ClassifyID] int NULL,
    [ClassifyTitle] nvarchar(32) COLLATE Chinese_PRC_CI_AS NULL,
    [UserInfoID] int NULL,
    [UserName] nvarchar(32) COLLATE Chinese_PRC_CI_AS NULL,
    [UserCode] nvarchar(32) COLLATE Chinese_PRC_CI_AS NULL,
    [DelFlag] int NULL,
    [CreateBy] nvarchar(32) COLLATE Chinese_PRC_CI_AS NULL,
    [CreateDate] datetime NULL,
    [ModifyBy] nvarchar(32) COLLATE Chinese_PRC_CI_AS NULL,
    [ModifyDate] datetime NULL,
    [IsAnonymous] int NULL DEFAULT ((0)),
    [IsDelAllow] int NULL,
    [ComeFrom] nvarchar(32) COLLATE Chinese_PRC_CI_AS NULL
)
ON [PRIMARY]
TEXTIMAGE_ON [PRIMARY]

4 个答案:

答案 0 :(得分:1)

通过将此添加到配置,我的问题已解决:

spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

答案 1 :(得分:0)

按相应的值检查admin_pick_date字符串字段名称及其数据类型(大写小写)。

祝你好运

答案 2 :(得分:0)

MSSQL Server可以根据设置区分大小写

编辑:那是我的错。你有什么改变吗?

您是否在application.properties文件中设置了以下内容?

--recursive

答案 3 :(得分:0)

是的,接受的答案是正确的。

如果要进行更多自定义,则可以扩展SpringPhysicalNamingStrategy并覆盖其中的方法。并且,选择该名称作为配置中命名策略的体现。

在代码中:

package app.config;

import org.hibernate.boot.model.naming.Identifier;
import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment;
import org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy;

public class MyNamingStrategy extends SpringPhysicalNamingStrategy {
    @Override
    public boolean isCaseInsensitive(JdbcEnvironment jdbcEnvironment) {
        return false; // MSSQL is case-sensitive
    }

    @Override
    public Identifier toPhysicalColumnName(Identifier name, JdbcEnvironment jdbcEnvironment) {
        return name; // we don't need adding underscore to the column name, we just use the name in "@Column(name="xxx")"
    }
}

在yml文件中:

spring: 
  jpa:
    properties:
      hibernate.physical_naming_strategy: app.config.MyNamingStrategy