0
votes

Comment résoudre mon problème de base de données? (MappingException)

J'étudie Boot de printemps 2 et hibernate 5. Cette fois, j'ai utilisé deux tables et celle de nombreuses relations. L'erreur survient ici.

J'ai déjà trouvé quelques conseils dans Stackoverflow, tels que la modification d'applications.Properties, créant une table centrale nommée utilisateurs_sites. Cependant, il n'a pas résolu mon problème. P>

Ce sont mes bases de données. P>

@Test
    public void test() {
        Site site1 = new Site();
        site1.setSiteURL("www.test.com");
        Site site2 = new Site();
        site2.setSiteURL("www.test1.com");

        restTemplate.postForEntity(getRootUrl()+ "/sites", site1, Site.class);
        restTemplate.postForEntity(getRootUrl()+ "/sites", site2, Site.class);

        User user1 = new User();
        user1.setUsername("1111");
        user1.setPassword("12131");

        user1.addSite(site1);
        user1.addSite(site2);

        User user2 = new User();
        user2.setUsername("2222");
        user2.setPassword("1241");

        user2.addSite(site1);

        restTemplate.postForEntity(getRootUrl()+ "/users", user1, User.class);
        restTemplate.postForEntity(getRootUrl()+ "/users", user2, User.class);

        User calledUser1 = restTemplate.getForObject(getRootUrl()+"/users/"+user1.getUsername(), User.class);
        System.out.println("Username: " + calledUser1.getUsername() + ", Password: " + calledUser1.getPassword());
        for (Site site : calledUser1.getSites()) {
            System.out.println("Sign up site: " + site.getSiteURL());
        }
        User calledUser2 = restTemplate.getForObject(getRootUrl()+"/users/"+user2.getUsername(), User.class);
        System.out.println("Username: " + calledUser2.getUsername() + ", Password: " + calledUser2.getPassword());
        for (Site site : calledUser2.getSites()) {
            System.out.println("Sign up site: " + site.getSiteURL());
        }
    }


0 commentaires

3 Réponses :


0
votes

Supprimer le @JOINCOLUMN (nom = "Nom d'utilisateur") dans la liste privée Liste privée = New ArrayList ();

en bidirectionnel @onetomany @manytoone relation, une seule entité peut être le propriétaire.

Vérifiez ce POST pour plus.


0 commentaires

0
votes

Placez le fichier ApplicationContext.xml dans le répertoire SRC / Main / Ressources. Il sera copié dans le répertoire de classePath et vous devriez pouvoir y accéder avec

@ContextConfiguration ("/ applicationContext.xml")

du -Documentation : un chemin clair, par exemple "context.xml", sera traité comme une ressource de classe du même package dans lequel la classe de test est définie. Un chemin commençant par une barre oblique est traité comme un emplacement de classe totalement qualifié, par exemple "/org/example/config.xamll".

Il est donc important que vous ajoutez la barre oblique lors de la référence du fichier dans le répertoire racine de la classePath


0 commentaires

1
votes
@Access(AccessType.FIELD)
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
private List<Site> sites = new ArrayList<Site>();


@Transient
public List<Site> getSites() {
        return sites;
}

2 commentaires

Merci pour votre réponse. Cela a bien résolu mon problème. Alors .... Pouvez-vous m'aider 1 de plus? J'ai modifié ma question. Ce problème est "non enregistré des informations sur le site.".


Umm, mieux ouvrir une nouvelle question pour cela: p