我用springboot创建了一个小型的社交媒体应用程序,在开发过程中我使用了h2本地数据库,效果很好。现在我尝试将它连接到一个heroku postgresql数据库,结果在标题中出现了错误。知道为什么吗?我怀疑是一个错误的方言,但无论我检查哪里,我都应该像现在一样使用org.hibernate.dialect.postgresqldialect。否则实体或Map可能会出问题?即使是,我也不知道该怎么修改。我对数据库的东西很陌生,所以如果这是个愚蠢的错误,请不要评判我。
实体类:用户
package com.schabby.socialplatform.models;
import com.fasterxml.jackson.annotation.JsonIgnore;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
@Entity
@SequenceGenerator(name="seq", initialValue=1, allocationSize=100)
public class User implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY, generator="seq")
private Long id;
private String username;
private String password;
private String name;
private int age;
private String picture;
private boolean online;
@JsonIgnore
@OneToMany(mappedBy = "User")
private Collection<Post> posts = new ArrayList<Post>();
public User() {
}
public User(String username, String password, String name, int age, String picture, boolean online) {
this.username = username;
this.password = password;
this.name = name;
this.age = age;
this.picture = picture;
this.online = online;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Collection<Post> getPosts() {
return posts;
}
public void setPosts(Collection<Post> posts) {
this.posts = posts;
}
public boolean isOnline() {
return online;
}
public void setOnline(boolean online) {
this.online = online;
}
public String getPicture() {
return picture;
}
public void setPicture(String picture) {
this.picture = picture;
}
}
实体类:post
package com.schabby.socialplatform.models;
import com.fasterxml.jackson.annotation.JsonIgnore;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Temporal;
@Entity
public class Post implements Serializable {
@Id
@GeneratedValue
private long id;
private String text;
@Temporal(javax.persistence.TemporalType.DATE)
private Date date;
@JsonIgnore
@ManyToOne
@JoinColumn(name="User_id")
private User User;
public Post() {
}
public Post(String text, Date date, User user) {
this.text = text;
this.date = date;
this.User = user;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public User getUser() {
return User;
}
public void setUser(User user) {
this.User = user;
}
}
我的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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.schabby</groupId>
<artifactId>socialplatform</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>socialplatform</name>
<description>Social Media Platform</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.2.1</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
<type>jar</type>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
应用程序属性:
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB
spring.datasource.url=jdbc:postgresql://ec2-54-217-206-236.eu-west-1.compute.amazonaws.com:5432/d5rk5sir0732uc?sslmode=require
spring.datasource.username=
spring.datasource.password=
spring.datasource.driverClassName=org.postgresql.Driver
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.ddl-auto=create
谢谢你的建议!
1条答案
按热度按时间b1zrtrql1#
我在stackoverflow上找到了答案!
问题是有些名称,比如我的表名:“user”是为postgresql保留的。所以,改名解决了我的问题。
原来的答案是:https://stackoverflow.com/a/56206827/13304501