所以我一直在为学校项目开发 Spring Boot 应用程序,但我无法运行它,因为当我尝试保存在存储库中时,我收到以下错误。我尝试了很多事情,比如改变关系类型,添加级联,但似乎没有任何效果。下面是 2 个类和 main 的代码以及错误
package com.site.anime.model;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.Fetch;
import javax.persistence.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Entity
@NoArgsConstructor
@AllArgsConstructor
@Data
public class Show {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String name;
private String image;
private Integer no_episodes;
private String description;
private Double overall_score;
@ManyToMany
private List<Caracter> caracters;
@OneToMany
private List<Review> reviews;
@ManyToMany
private List<Category> categories;
}
package com.site.anime.model;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.util.List;
@Entity
@NoArgsConstructor
@AllArgsConstructor
@Data
public class Caracter {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String name;
private String image;
private String description;
@ManyToMany
private List<Show> shows;
}
package com.site.anime;
import com.site.anime.model.*;
import com.site.anime.repository.*;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
@EnableJpaRepositories
@SpringBootApplication
public class AnimeApplication {
public static void main(String[] args) {
SpringApplication.run(AnimeApplication.class, args);
}
@Bean
CommandLineRunner init(RepositoryShow repositoryShow, RepositoryCategory repositoryCategory,
RepositoryCaracter repositoryCaracter, RepositoryUser repositoryUser,
RepositorySuperUser repositorySuperUser){
return args -> {
List<Show> shows=new LinkedList<>();
Caracter caracter=new Caracter(null,"rusu","","",null);
List<Caracter> caracters=new LinkedList<>();
caracters.add(caracter);
Profile profile=new Profile();
Utilizator user=new Utilizator(null,"","","",profile,null);
//Review review=new Review(null,user,"",0);
Review review=new Review(null,null,"",0);
List<Review> reviews=new LinkedList<>();
reviews.add(review);
user.setReviews(reviews);
Show show=new Show(null,"ReZero Season 1","",25,"",0.0,null,reviews,null);
shows.add(show);
caracter.setShows(shows);
show.setCaracters(caracters);
//
//repositoryShow.save(show);
repositoryCaracter.save(caracter);
//repositoryUser.save(user);
};
}
}
和错误
2021-03-11 14:11:02.765 INFO 10248 --- [ main] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
2021-03-11 14:11:02.771 INFO 10248 --- [ main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2021-03-11 14:11:03.007 WARN 10248 --- [ main] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
2021-03-11 14:11:03.065 INFO 10248 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
2021-03-11 14:11:03.193 INFO 10248 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2021-03-11 14:11:03.198 INFO 10248 --- [ main] com.site.anime.AnimeApplication : Started AnimeApplication in 2.922 seconds (JVM running for 3.566)
2021-03-11 14:11:03.245 WARN 10248 --- [ main] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 1064, SQLState: 42000
2021-03-11 14:11:03.245 ERROR 10248 --- [ main] o.h.engine.jdbc.spi.SqlExceptionHelper : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'show (description, image, name, no_episodes, overall_score, id) values ('', '', ' at line 1
2021-03-11 14:11:03.252 INFO 10248 --- [ main] ConditionEvaluationReportLoggingListener :
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2021-03-11 14:11:03.263 ERROR 10248 --- [ main] o.s.boot.SpringApplication : Application run failed
``
答案 0 :(得分:0)
SHOW
是 MySql 的 keyword(以及 NAME
和 DESCRIPTION
),因此您应该使用 SQL quoted identifier,如下所示:
@Entity
@Table(name = "`show`")
public class Show {
// ...
@Column(name = "`name`")
private String name;
@Column(name = "`description`")
private String description;
}
答案 1 :(得分:0)
我解决了这个问题 对于任何想知道的人,我的一个类叫做 Show,而 sql 有一个保留字叫做 show