我有一个问题,如果没有所有子对象关联,我想获取我想要的对象。
我有我的课网站
延迟加载不起作用 - 我只需要父对象,而不是所有的关联
@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..
所以,我只需要站点对象没有序列协会
在我的序列表我有
@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..
,所以,当我使用FetchType.Lazy,并调用我的方法:
@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; }
我得到这个错误:
未能懒洋洋地初始化角色的集合:xxx.xxx.xxx。 xxx.xxx.site.Site.sequences,无法初始化代理 - 没有会话
当我使用FetchType.EAGER,我得到网站的对象,但我也得到所有序列对象,以及其他协会的所有对象(这是正常的我知道)
请,有些人知道为什么懒标注不工作,如何解决这个问题
你是误会。懒加载**是**工作:这就是为什么你得到错误。再后来的一些代码试图访问延迟关联(一个JSON序列为例),它不能被加载,因为没有会话。 –