Hallo allesamt,
Bin dabei mit Postgres und Hibernate in Verbindung mit Spring Boot erste Erfahrungen zu sammeln.
Leider bekomme ich folgenden Fehler, wenn ich versuche etwas in meine DB zu bringen
[CODE lang="java" title="Fehlermeldung"]2022-01-11 17:43:13.356 DEBUG 20948 --- [nio-8080-exec-1] o.a.c.authenticator.AuthenticatorBase : Security checking request PUT /skills/-1
2022-01-11 17:43:13.356 DEBUG 20948 --- [nio-8080-exec-1] org.apache.catalina.realm.RealmBase : No applicable constraints defined
2022-01-11 17:43:13.359 DEBUG 20948 --- [nio-8080-exec-1] o.a.c.a.jaspic.AuthConfigFactoryImpl : Loading persistent provider registrations from [C:\tomcat\conf\jaspic-providers.xml]
2022-01-11 17:43:13.360 DEBUG 20948 --- [nio-8080-exec-1] o.a.c.authenticator.AuthenticatorBase : Not subject to any constraint
2022-01-11 17:43:13.361 INFO 20948 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
2022-01-11 17:43:13.361 INFO 20948 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2022-01-11 17:43:13.362 INFO 20948 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 1 ms
2022-01-11 17:43:13.692 WARN 20948 --- [nio-8080-exec-1] o.a.c.util.SessionIdGeneratorBase : Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [138] milliseconds.
2022-01-11 17:43:13.807 DEBUG 20948 --- [nio-8080-exec-1] o.a.c.loader.WebappClassLoaderBase : findClass(java.lang.ObjectCustomizer)
2022-01-11 17:43:13.808 DEBUG 20948 --- [nio-8080-exec-1] o.a.c.loader.WebappClassLoaderBase : --> Returning ClassNotFoundException
2022-01-11 17:43:13.809 DEBUG 20948 --- [nio-8080-exec-1] o.a.c.loader.WebappClassLoaderBase : findClass(de.cmk.todo.restservices.skillmanager.SkillCustomizer)
2022-01-11 17:43:13.810 DEBUG 20948 --- [nio-8080-exec-1] o.a.c.loader.WebappClassLoaderBase : --> Returning ClassNotFoundException
Hibernate: select skill0_.id as id1_0_0_, skill0_.description as descript2_0_0_, skill0_.name as name3_0_0_ from "projekt-skill-verwalter".skill skill0_ where skill0_.id=?
2022-01-11 17:43:13.853 WARN 20948 --- [nio-8080-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 0, SQLState: 42703
2022-01-11 17:43:13.853 ERROR 20948 --- [nio-8080-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper : FEHLER: Spalte skill0_.id existiert nicht
[/CODE]
Ich hatte nun eigentlich angenommen, dass es reichen würde den SQL-Dialekt in die application.properties zu stellen
Aber leider macht es keinen einzigen Unterschied auch nicht wie das SQL-Statement gestaltet ist. Außerdem fällt mir natürlich auf, dass ich ein Select-Statement aber kein Insert-Statement im log sehe :-/
Hier ist meine application.properties
[CODE lang="java" title="application.properties" highlight="6"]spring.datasource.url=jdbc
ostgresql://localhost:5432/postgres
spring.datasource.username=XXXXXX
spring.datasource.password=XXXXXX
spring.data.jpa.repositories.bootstrap-mode=default
spring.jpa.defer-datasource-initialization=true
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQL95Dialect
spring.jpa.show-sql=true
logging.level.org.springframework=info
spring.security.user.name=user
spring.security.user.password=password
server.tomcat.accesslog.enabled=true
logging.level.org.apache.tomcat=DEBUG
logging.level.org.apache.catalina=DEBUG
server.tomcat.accesslog.suffix=.log
server.tomcat.accesslog.prefix=access_log
server.tomcat.accesslog.file-date-format=.yyyy-MM-dd
server.tomcat.basedir=c:\\tomcat
server.tomcat.accesslog.directory=logs[/CODE]
Und hier mein aktueller Skill-Bean
[CODE lang="java" title="skill.java"]package de.cmk.todo.restservices.skillmanager;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(onlyExplicitlyIncluded = true)
@Builder
@Entity
@Table(name= "skill", schema = "\"projekt-skill-verwalter\"")
public class Skill {
@Id
@GeneratedValue
@EqualsAndHashCode.Include
private Long id;
private String name;
private String description;
}[/CODE]
Wäre für Ideen sehr offen
viele Grüße
Zonk
Bin dabei mit Postgres und Hibernate in Verbindung mit Spring Boot erste Erfahrungen zu sammeln.
Leider bekomme ich folgenden Fehler, wenn ich versuche etwas in meine DB zu bringen
[CODE lang="java" title="Fehlermeldung"]2022-01-11 17:43:13.356 DEBUG 20948 --- [nio-8080-exec-1] o.a.c.authenticator.AuthenticatorBase : Security checking request PUT /skills/-1
2022-01-11 17:43:13.356 DEBUG 20948 --- [nio-8080-exec-1] org.apache.catalina.realm.RealmBase : No applicable constraints defined
2022-01-11 17:43:13.359 DEBUG 20948 --- [nio-8080-exec-1] o.a.c.a.jaspic.AuthConfigFactoryImpl : Loading persistent provider registrations from [C:\tomcat\conf\jaspic-providers.xml]
2022-01-11 17:43:13.360 DEBUG 20948 --- [nio-8080-exec-1] o.a.c.authenticator.AuthenticatorBase : Not subject to any constraint
2022-01-11 17:43:13.361 INFO 20948 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
2022-01-11 17:43:13.361 INFO 20948 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2022-01-11 17:43:13.362 INFO 20948 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 1 ms
2022-01-11 17:43:13.692 WARN 20948 --- [nio-8080-exec-1] o.a.c.util.SessionIdGeneratorBase : Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [138] milliseconds.
2022-01-11 17:43:13.807 DEBUG 20948 --- [nio-8080-exec-1] o.a.c.loader.WebappClassLoaderBase : findClass(java.lang.ObjectCustomizer)
2022-01-11 17:43:13.808 DEBUG 20948 --- [nio-8080-exec-1] o.a.c.loader.WebappClassLoaderBase : --> Returning ClassNotFoundException
2022-01-11 17:43:13.809 DEBUG 20948 --- [nio-8080-exec-1] o.a.c.loader.WebappClassLoaderBase : findClass(de.cmk.todo.restservices.skillmanager.SkillCustomizer)
2022-01-11 17:43:13.810 DEBUG 20948 --- [nio-8080-exec-1] o.a.c.loader.WebappClassLoaderBase : --> Returning ClassNotFoundException
Hibernate: select skill0_.id as id1_0_0_, skill0_.description as descript2_0_0_, skill0_.name as name3_0_0_ from "projekt-skill-verwalter".skill skill0_ where skill0_.id=?
2022-01-11 17:43:13.853 WARN 20948 --- [nio-8080-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 0, SQLState: 42703
2022-01-11 17:43:13.853 ERROR 20948 --- [nio-8080-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper : FEHLER: Spalte skill0_.id existiert nicht
[/CODE]
Ich hatte nun eigentlich angenommen, dass es reichen würde den SQL-Dialekt in die application.properties zu stellen
Aber leider macht es keinen einzigen Unterschied auch nicht wie das SQL-Statement gestaltet ist. Außerdem fällt mir natürlich auf, dass ich ein Select-Statement aber kein Insert-Statement im log sehe :-/
Hier ist meine application.properties
[CODE lang="java" title="application.properties" highlight="6"]spring.datasource.url=jdbc
spring.datasource.username=XXXXXX
spring.datasource.password=XXXXXX
spring.data.jpa.repositories.bootstrap-mode=default
spring.jpa.defer-datasource-initialization=true
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQL95Dialect
spring.jpa.show-sql=true
logging.level.org.springframework=info
spring.security.user.name=user
spring.security.user.password=password
server.tomcat.accesslog.enabled=true
logging.level.org.apache.tomcat=DEBUG
logging.level.org.apache.catalina=DEBUG
server.tomcat.accesslog.suffix=.log
server.tomcat.accesslog.prefix=access_log
server.tomcat.accesslog.file-date-format=.yyyy-MM-dd
server.tomcat.basedir=c:\\tomcat
server.tomcat.accesslog.directory=logs[/CODE]
Und hier mein aktueller Skill-Bean
[CODE lang="java" title="skill.java"]package de.cmk.todo.restservices.skillmanager;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(onlyExplicitlyIncluded = true)
@Builder
@Entity
@Table(name= "skill", schema = "\"projekt-skill-verwalter\"")
public class Skill {
@Id
@GeneratedValue
@EqualsAndHashCode.Include
private Long id;
private String name;
private String description;
}[/CODE]
Wäre für Ideen sehr offen
viele Grüße
Zonk