JPA-Großbuchstaben-Tabelle Namen

Ich habe eine Tabelle in 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,
  )

und ich versuche die Karte auf dieser Tabelle, So dass ich verwendet @Table JPA-annotation (siehe unten). Dies ist mein application.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

und schließlich, dies ist meine entity-Klasse:

@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;

Wenn ich es so @Table(name="UTILISATEUR") ich bekomme msg von PostgreSQL

ERREUR: la relation « utilisateur » n'existe pas 

Wenn ich versuche zu entkommen Zitat @Table(name="\"UTILISATEUR\"")

ERROR: syntax error at or near "`"

Ich habe versucht, die Antworten aus dieser Frage, aber es funktioniert nicht

Spring boot JPA insert in die TABELLE mit den Großbuchstaben Namen mit Hibernate

update

Ich habe die Suche über ImprovedNamingstrategy es scheint, wie ein Problem in spring boot statt, die ich verwendet habe EJB3NamingStrategy und auch DefaultNamingStrategy es nicht funktioniert, was lustig es ist, wenn Hibernate ausführen des SQL-das Ergebnis ist ziemlich verwirrend :

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_ 

Es ist wie es weiß, das der name der Tabelle in GROßBUCHSTABEN aber nicht abbilden wollen, oder ich weiß nicht, was falsch mit es ist dies das Ergebnis der Verwendung

spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.DefaultNamingStrategy
or 
spring.jpa.hibernate.naming_strategy = org.hibernate.cfg.DefaultNamingStrategy

und auch die EJB3NamingStrategy

Dies ist auch das Ergebnis, wenn ich die annotation wie

@Table(name="UTILISATEUR")  

und ich habe auch versucht, wie das

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

bekommen und habe das Problem

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_ 

schließlich ist dies mein 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>

  • Der beste Ansatz ist, verwenden Sie niemals Bezeichner - Sie sind viel mehr Mühe, dann sind Sie es Wert.
  • Ich weiß, Aber ich kann nicht berühren Datenbank-Struktur :/ es geht um die Projekte, wo Sie die Datenbank, und du gehst, es zu benutzen
  • In der JPA-Implementierung, die ich verwenden (DataNucleus) kann ich einfach eine Persistenz-Eigenschaft auf "Kleinbuchstaben" oder "GROß -" und es hat die notwendigen änderungen an, was angegeben ist, und alles funktioniert. Vielleicht ist Ihr gewählten Umsetzung hat sowas?
  • könnten Sie bitte erklären, was Sie gerade gesagt !
  • Meiner Meinung nach, was Sie tun können, ist die Implementierung eines benutzerdefiniertes Benennungs-Strategie zu konvertieren entity-Namen zu den entsprechenden Tabellennamen.
  • Welche version von Hibernate verwenden Sie?
  • hibernate-core-4.3.11
  • Bin bereits in der Anwendung propreties
  • Ich habe gerade überprüft die Verwendung der zitierten Tabelle id mit JPA (hibernate 5.0.3) und Derby, und mit diesen ist es OK. Ich kann mit @Entity(name="\"FFiirrmm\""), und alles ist wie erwartet. Können Sie uns zeigen, das ganze "syntax error" - Meldung?
  • unexpected char: '"' [select generatedAlias0 from "UTILISATEUR" as generatedAlias0] bekam ich diese Fehlermeldung, wenn ich es verwenden, wie Sie es
  • Ich denke, es ist ein Hibernate 4 problem.
  • Können Sie versuchen, Hibernate 5 nur für einen test.
  • okey also bin mit JPA 2.1, und Sie sagten, hibernate 5 wird unterstützt, so werde hinzufügen, hibernate 5 in der maven-Abhängigkeiten
  • Sie werden nicht in der Lage zu verwenden org.hibernate.cfg.ImprovedNamingStrategy
  • dann werde ich nicht in der Lage sein, die Namen meiner Tabelle in groß-oder Kleinschreibung so :/
  • Sie können stackoverflow.com/questions/34949839/...
  • ich werde ausprobiert 😀 Danke für alles
  • Wenn Sie postgres, warum dann arbeiten Sie mit einer Mysql-Dialekt?!
  • haben Sie eine Idee, sollte ich stattdessen verwenden
  • Laut der Dokumentation werden Alle Identifikatoren (einschließlich Spaltennamen nicht in doppelten Anführungszeichen sind gefaltet, um den unteren Fall in PostgreSQL. Spaltennamen, die erstellt wurden, mit doppelten Anführungszeichen, und damit beibehalten Großbuchstaben (und/oder anderen syntax-Verletzungen) werden in doppelte Anführungszeichen für den rest Ihres Lebens. Haben Sie versucht, in Kleinbuchstaben der name der Tabelle?
  • Ich Tat entkommen, war es ein Dialekt-problem kann ich nicht ändern, Tabelle Namen, weil mein client ist mit der Datenbank in einer anderen app
  • Ich habe versucht, zu simulieren, Ihr problem, aber ich kann nicht finden jedes problem in Ihrem Fall: github.com/xsalefter/stackoverflowmvn Könnten Sie versuchen, diese und sehen, was passiert, auf Ihrem Computer? FYI: ich bin mit ubuntu 15.10 und PostgreSQL 9.4

InformationsquelleAutor Kamel Mili | 2016-04-01
Schreibe einen Kommentar