Hibernate не может создать таблицу с отношением @ManyToOne - PullRequest
0 голосов
/ 25 декабря 2018

Я создаю таблицу «Пользователь», которая идеально создана Hibernate, на этом нет проблем.Проблема в моей второй модели (объект под названием «Персонаж»), которая представляет собой модель с отношением @ManyToOne, я не знаю почему, но hibernate не может создать эту вторую таблицу.

Мой серверэкземпляр Mysql с AWS RDS.Первая таблица создается hibernate, но не вторая.

@ Открытый класс Entity Character {{1005 *

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer id;
@ManyToOne
private User joueur;
private String pseudo;
private Integer points;


public Character() {
    super();
}

public Character(User joueur) {
    // appel a l'autre constructeur
    this(joueur, null, null);
}

public Character(User joueur, String pseudo,Integer points) {
    super();
    this.joueur = joueur;
    this.pseudo = pseudo;
    this.points = points;
}

public Integer getId() {
    return id;
}

public String getPseudo() {
    return pseudo;
}

public void setPseudo(String pseudo) {
    this.pseudo = pseudo;
}

public Integer getPoints() {
    return points;
}

public void setPoints(Integer points) {
    this.points = points;
}

public User getJoueur() {
    return joueur;
}

}

@ Entity // Это говорит Hibernate сделатьтаблица из этого класса открытый класс Пользователь {

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer id;
private String username;
private String password;
@OneToMany(mappedBy = "joueur")
@OrderBy("id ASC")
private List<Character> personnages;
private String league;
private Integer points; 


public Integer getId() {
    return id;
}

public void setId(Integer 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 List<Character> getPersonnages() {
    return personnages;
}

public void setPersonnages(List<Character> personnages) {
    this.personnages = personnages;
}

public String getLeague() {
    return league;
}

public void setLeague(String league) {
    this.league = league;
}

public Integer getPoints() {
    return points;
}

public void setPoints(Integer points) {
    this.points = points;
}

}

@ Controller
@RequestMapping (path = "/ init") открытый класс MainController {

@Autowired // This means to get the bean called userRepository
           // Which is auto-generated by Spring, we will use it to handle the data
private UserRepository userRepository;

@Autowired 
private CharacterRepository characterRepository;

@GetMapping(path="/add") // Map ONLY GET Requests
public String addNewUser () {

    User joueur = new User();
    joueur.setUsername("testUser");
    joueur.setPassword("password");
    joueur.setLeague("Bronze");
    joueur.setPoints(10000);
    userRepository.save(joueur);

    Character perso = new Character(joueur,"testPerso1",1000);
    characterRepository.save(perso);

    return "";
}

@GetMapping(path="/all")
public @ResponseBody Iterable<User> getAllUsers() {
    // This returns a JSON or XML with the users
    return userRepository.findAll();
}

}

У меня есть эта ошибка: "com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: у вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, которое соответствует версии вашего сервера MySQL на правосинтаксис для использования рядом с символом «добавить ограничение FKdf2yvyvitaqt2u7de3ywfjcv ссылка на внешний ключ (joueur_id)» в строке 1 "

1 Ответ

0 голосов
/ 26 декабря 2018

Хорошо, я нашел решение ... JPA-аннотация отменила имя таблицы «Символ», просто измените имя таблицы, и она будет работать отлично, тупой JPA ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...