J'ai un problème pour obtenir l'objet que je veux sans toutes les associations d'enfants.
j'ai mon site classe
La charge paresseuse ne fonctionne pas - J'ai seulement besoin de l'objet parent, pas de toutes les associations
@Entity @Table(name = "Sites") public class Site { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "Id_Site", unique = true, nullable = false) private long Id_Site; private String ...; private boolean ...; private long ...; private Date ...; private Date ...; private String ...; @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY) private Set sequences = new HashSet(); @ManyToOne private ... ...; @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY) private Set ... = new HashSet(); @ManyToOne private ... ...; public constructor... public set.. public get..
donc, je ne ai besoin objet du site sans séquences Association
dans ma table de séquence je
@Entity @Table(name = "Sequences") public class Sequence { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "Id_Sequence", unique = true, nullable = false) private long Id_Sequence; private Date ....; private Date ....; private String ....; private String ....; private String ....; private int ....; private int ....; private double ....; private double ....; @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER) private Set traceSequences = new HashSet(); @ManyToOne(cascade = CascadeType.ALL) private Site site; public constructor... public set.. public get..
donc, quand j'utiliser FetchType.LAZY et appeler ma méthode:
@Override public Site findSiteByName(String Name_Site) { List sites = entityManager.createQuery("SELECT s FROM Site s").getResultList(); for (Site item : sites) { if (item.getNom_Site().equals(Name_Site)) { return item; } } return null; }
Je reçois cette erreur:
n'a pas réussi à initialiser paresseusement une collection de rôle: xxx.xxx.xxx. xxx.xxx.site.Site.sequences, n'a pas pu initialiser proxy - aucune session
et quand je l'utilise FetchType.EAGER, je reçois l'objet du site, mais je reçois aussi tous les objets séquences, et tous les objets d'associations autres (C'est normal, je sais)
S'il vous plaît, quelqu'un sait pourquoi l'annotation paresseux ne fonctionne pas, et comment résoudre ce problème
Vous malentendu. Lazy Loading ** fonctionne **: c'est pourquoi vous obtenez l'erreur. Un code plus récent essaie alors d'accéder à l'association paresseuse (un Serializer JSON par exemple) et il ne peut pas être chargé car il n'y a pas de session. –