spring-in-action-6-samples icon indicating copy to clipboard operation
spring-in-action-6-samples copied to clipboard

Define a table name for the class User

Open Dieblich opened this issue 2 years ago • 2 comments

Hi,

when you use the class /taco-cloud-sfc/src/main/java)/tacos/User.java with a h2 db, this could run into an issue with the h2-Usertable "User" like this:

Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax Fehler in SQL Befehl "drop table if exists [*]user CASCADE "; erwartet "identifier"
Syntax error in SQL statement "drop table if exists [*]user CASCADE "; expected "identifier"; SQL statement:
drop table if exists user CASCADE  [42001-210]

Spring cannot create the data-table.

I solved this issue with an annotation for the table:

...
@Table(name="TACO_USER")
public class User implements UserDetails {
...

This solves the issue with the h2 database and the apps starts fine.

Dieblich avatar Apr 24 '22 09:04 Dieblich

One could also update the application.yml file to (check jpa.properties.hibernate)

spring:
  datasource:
    generate-unique-name: false
    name: tacocloud
  h2:
    console:
      enabled: true
  jpa:
    properties:
      hibernate:
        "[globally_quoted_identifiers]": true
        "[globally_quoted_identifiers_skip_column_definitions]": true

mrigankvallabh avatar Jun 14 '22 00:06 mrigankvallabh

Thank you so much!

lsxol avatar Sep 20 '22 16:09 lsxol