2010-08-02 6 views
0

J'ai mis en place un petit projet en tant que test. J'utilise BlazeDS et JPA avec Hibernate sur mon serveur de test, et j'utilise flex avec dpHibernate pour accéder aux entités Java. Chaque entité Java étend BaseEntity, une classe qui contient des champs ID et UUID. Les entités Flex sont créées par DTO2FX. Mon problème est que, lorsque j'exécute le projet Flex pour essayer d'afficher quelques lignes d'une entité Users, le SQL qui est en cours d'exécution rejoint toutes les tables de ma base de données. Cela continue jusqu'à ce que java.lang.StackOverflowError apparaisse. Ce comportement est complètement inattendu, et je ne suis pas vraiment sûr de l'endroit où chercher pour résoudre le problème. Toutes les suggestions seraient grandement appréciées.Hibernate rejoint chaque table dans la base de données

De toute évidence, j'ai omis certains détails, mais j'espère que cela donne une idée raisonnable du projet. Je serais plus qu'heureux d'inclure n'importe quel code qui pourrait être utile, mais je n'ai vraiment aucune idée de ce qui cause le comportement pour le moment. Merci!

EDIT: Voici un mappage qui pourrait mieux expliquer le problème.

@Entity 
@FXClass(ignoreSuperclasses={Principal.class, UserDetails.class}) 
@Table(name="edrUser") 
public class User extends BaseEntity implements IAbstractEntity, Principal, UserDetails { 
    @Column(length=20) 
    private String username; 

    @ManyToMany(mappedBy="users",fetch=FetchType.LAZY) 
    private Set<Department> departments = new HashSet<Department>(0); 

    @ManyToOne 
    @JoinColumn(name="company_id",nullable=false) 
     private Company company; 

    @OneToMany(cascade=CascadeType.ALL, mappedBy="user", fetch=FetchType.LAZY) 
    private Set<DepartmentJobUserLink> departmentJobUsers = new HashSet<DepartmentJobUserLink>(0); 

    @Column(length=20) 
    private String password; 

    @Column(length=20) 
    private String forename; 


    public User(){ 
     super(); 
    } 

    /* Getters and setters */ 

} 
+0

pouvez-vous poster quelques exemples de mappings? –

+0

J'ai modifié mon message original avec un exemple de mappage. Je peux ajouter à cela si ce n'est pas suffisant. C'est assez représentatif de mes autres entités. – Donny

Répondre

2

Avez-vous forcé le chargement paresseux à false?

+0

Toutes mes entités sont paresseuses. J'avoue que je suis inexpérimenté, mais je pensais que cela empêcherait tout chargement jusqu'à ce qu'il le soit. – Donny

+0

Je me demandais simplement si je pouvais obtenir des éclaircissements sur la raison pour laquelle le chargement paresseux devrait être faux. Je ne suis pas sûr de comprendre le raisonnement derrière votre réponse. – Donny

+0

Si vous forcez le chargement paresseux à false et que vous chargez un objet, toutes les propriétés sont également chargées, ce qui entraînerait une série d'instructions join sql. C'est ce qui semble être le comportement que vous décrivez. –

0

Cela me semble que vous avez un cycle dans vos tabledependencies SQL, mais c'est juste une supposition. Vérifié cela déjà?

Questions connexes