当前位置: 首页 > 知识库问答 >
问题:

JPA大写字母表名

怀飞扬
2023-03-14

我在PostgreSQL中有一个表:

CREATE TABLE "UTILISATEUR"(
 
 "IdUtilisateur" serial NOT NULL,
 "Nom" character varying(50),
 "Prenom" character varying(50),
 "Profil" character varying(50),
 "Pseudo" character varying(20),
 "IdSite" integer DEFAULT 0,
 "Password" character varying(1024),
  id_role integer,
  )

我正在这个表上尝试Map,所以我使用了@TableJPA注释(见下文)。这是我的应用程序。propreties:

spring.datasource.url = jdbc:postgresql://localhost/baseecu
spring.datasource.username = postgres
spring.datasource.password =root
spring.datasource.driverClassName=org.postgresql.Driver
spring.jpa.database = MYSQL 
spring.jpa.show-sql = true
spring.jpa.hibernate.ddl-auto=update 
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect

最后,这是我的实体类:

@Entity
@Table(name="UTILISATEUR")
public class Utilisateur   {
@Id
@GeneratedValue(strategy=GenerationType.AUTO) 
@Column(name="IdUtilisateur")
public Long id ;
public String Nom ; 
public String Prenom ; 
public String Profil ; 
public String Pseudo ; 


public String Password ;
@ManyToOne
@JoinColumn(name="id_role")
public Role role ;
public Long getId() {
    return id;

如果我有这样的@table(name=“utilisateur”),我从PostgreSQL中得到消息

ERREUR: la relation « utilisateur » n'existe pas 

当我尝试转义引用@table(name=“\”utilisateur“\”)

ERROR: syntax error at or near "`"

我试过这个问题的回答,但不起作用

Spring boot JPA在表中插入带有Hibernate的大写字母名称

我一直在搜索改进的NamingStrategy,这似乎是spring boot中的一个问题,相反,我使用了EJB3NamingStrategy,还有DefaultNamingStrategy,它不起作用,很有趣,当Hibernate执行SQL时,结果非常令人困惑:

Hibernate: select utilisateu0_.IdUtilisateur as IdUtilis1_2_, utilisateu0_.Nom as Nom2_2_, utilisateu0_.Password as Password3_2_, utilisateu0_.Prenom as Prenom4_2_, utilisateu0_.Profil as Profil5_2_, utilisateu0_.Pseudo as Pseudo6_2_, utilisateu0_.id_role as id_role7_2_ from UTILISATEUR utilisateu0_ 
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.DefaultNamingStrategy
or 
spring.jpa.hibernate.naming_strategy = org.hibernate.cfg.DefaultNamingStrategy

这也是我使用类似注释时的结果

@Table(name="UTILISATEUR")  

我也像那样试过

@Table(name="\"UTILISATEUR\"")

我明白问题所在

ERROR: syntax error at or near "`"

Hibernate: select utilisateu0_.IdUtilisateur as IdUtilis1_2_, utilisateu0_.Nom as Nom2_2_, utilisateu0_.Password as Password3_2_, utilisateu0_.Prenom as Prenom4_2_, utilisateu0_.Profil as Profil5_2_, utilisateu0_.Pseudo as Pseudo6_2_, utilisateu0_.id_role as id_role7_2_ from `UTILISATEUR` utilisateu0_ 

最后,这是我的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.xx.MDValidation</groupId>
<artifactId>xx.MDValidation</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>xx.MDValidation</name>
<description>Projet Validation xx</description>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.2.RELEASE</version>
</parent>
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.version>1.8</java.version>
<hibernate.version>4.2.21.Final</hibernate.version>
<commons-dbcp.version>1.2.2</commons-dbcp.version>
</properties>

    <dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
        
    </dependency>

    
        <dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.1-901.jdbc4</version>
</dependency>
<dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>

    
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jooq</artifactId>
    </dependency>
    <dependency>
        <groupId>bsf</groupId>
        <artifactId>bsf</artifactId>
        <version>2.4.0</version>
    </dependency>
    </dependencies>


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

共有1个答案

燕星鹏
2023-03-14

也许是因为您使用的是mysql5diagence,所以这里有一个Postgres方言,就像这样post它,对于改进的命名策略,使用EJB3,比如Spring boot,JPA,insert in TABLE和Hibernate的大写字母名称

spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect

希望对你有用

 类似资料:
  • 我正在尝试使用正则表达式将大写字母替换为相应的小写字母。因此 变成 在Sublime的文本中。如何在同时包含小写和大写字母的单词中使用小写字母?所以它会影响维纳斯,而不是维纳斯。

  • 将字符串首字母大写。 使用数组 解构(destructuring) 和 String.toUpperCase() 大写第一个字母,用 ...rest 获得第一个字母后字符数组,然后 Array.join('') 再次使它成为一个字符串。 省略 lowerRest 参数以保持字符串的剩余部分不变,或者将其设置为 true 这将会使字符串的剩余部分都转换为小写。 const capitalize =

  • 问题 你想把字符串中每个单词的首字母转换为大写形式。 解决方案 使用“拆分-映射-拼接”模式:先把字符串拆分成单词,然后通过映射来大写单词第一个字母小写其他字母,最后再将转换后的单词拼接成字符串。 ("foo bar baz".split(' ').map (word) -> word[0].toUpperCase() + word[1..-1].toLowerCase()).join ' ' #

  • 问题内容: THIS IS SOMETEXT 我想使该段的首字母大写。 CSS可能吗? 编辑: 我所有的文本都用大写字母。 问题答案: 您可以使用以使段落的每个单词都大写,如下所示: 在 IE4 +中受支持。 这里的例子 。 [16.5大写:“文本转换”属性] 此属性控制元素文本的大写效果。 将每个单词的第一个字符大写;其他字符不受影响。 将每个单词都用大写字母大写: 在此假设下: 我想使它看起来

  • 目标是从string中获取新的字符串,该字符串没有大写前的小写。在本例中,我们应该得到输出“neyork” 我试图通过ASCII表中大小写字母的位置来实现这一点,但它不起作用。我不确定是否可以通过ASCII表中的位置,以simillar的方式来实现这一点。

  • 问题内容: 如何仅使用CSS将以下每个句子的大写字母转换为小写和首字母大写? 来自: 这是一个例句。 收件人: 这是一个例句。 更新: 当我使用文本转换时:大写;结果还是一样。 问题答案: CSS中没有句子大写选项。其他答案表明是不正确的,因为该选项将 每个单词 都大写。 如果您只希望 每个元素* 的 首字母 大写,则这是一种 粗略的 实现方式,但是与实际的句子大写绝对不符: *