admin 管理员组文章数量: 1086019
I have this relationship where I have campaign linked with campaign_planning using @OneToMany relation like this:
@Table(name = "campaign")
public class Campaign implements Serializable {
@Id @Column(name = "id", nullable = false)
private UUID id;
@ManyToOne(cascade = {CascadeType.REFRESH})
@JoinColumn(name = "parent_id", updatable = false)
private Campaign parent;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "parent", orphanRemoval = true)
@OrderBy("createTime")
private List<Campaign> campaigns;
@OneToOne(mappedBy = "campaign", cascade = CascadeType.ALL, orphanRemoval = true)
@PrimaryKeyJoinColumn
private ScheduleInfo scheduleInfo;
@OneToMany(mappedBy = "superCampaign", fetch = FetchType.LAZY)
private List<CampaignPlanning> campaignPlanning;
}
@Table(name = "campaign_planning")
public class CampaignPlanning implements Serializable {
@Id
private UUID id;
@OneToOne
@JoinColumn(name = "campaign_id", insertable = false, updatable = false)
@NotFound(action = NotFoundAction.IGNORE)
private Campaign campaign;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "super_campaign_id", insertable = false, updatable = false)
private Campaign superCampaign;
}
But when we run application & try to get campaign_planinng, Even I set fetch = FetchType.LAZY on campaign_planning, it still included in my query.
What could be the issue here?
select
campaignpl0_.*,
campaign1_.*,
campaign2_.*,
schedulein3_.*,
from
campaign_planning campaignpl0_
left outer join campaign campaign1_ on campaignpl0_.campaign_id = campaign1_.id
left outer join campaign campaign2_ on campaign1_.parent_id = campaign2_.id
left outer join schedule_info schedulein3_ on campaign2_.id = schedulein3_.campaign_id
where
campaignpl0_.super_campaign_id = ?
I have this relationship where I have campaign linked with campaign_planning using @OneToMany relation like this:
@Table(name = "campaign")
public class Campaign implements Serializable {
@Id @Column(name = "id", nullable = false)
private UUID id;
@ManyToOne(cascade = {CascadeType.REFRESH})
@JoinColumn(name = "parent_id", updatable = false)
private Campaign parent;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "parent", orphanRemoval = true)
@OrderBy("createTime")
private List<Campaign> campaigns;
@OneToOne(mappedBy = "campaign", cascade = CascadeType.ALL, orphanRemoval = true)
@PrimaryKeyJoinColumn
private ScheduleInfo scheduleInfo;
@OneToMany(mappedBy = "superCampaign", fetch = FetchType.LAZY)
private List<CampaignPlanning> campaignPlanning;
}
@Table(name = "campaign_planning")
public class CampaignPlanning implements Serializable {
@Id
private UUID id;
@OneToOne
@JoinColumn(name = "campaign_id", insertable = false, updatable = false)
@NotFound(action = NotFoundAction.IGNORE)
private Campaign campaign;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "super_campaign_id", insertable = false, updatable = false)
private Campaign superCampaign;
}
But when we run application & try to get campaign_planinng, Even I set fetch = FetchType.LAZY on campaign_planning, it still included in my query.
What could be the issue here?
select
campaignpl0_.*,
campaign1_.*,
campaign2_.*,
schedulein3_.*,
from
campaign_planning campaignpl0_
left outer join campaign campaign1_ on campaignpl0_.campaign_id = campaign1_.id
left outer join campaign campaign2_ on campaign1_.parent_id = campaign2_.id
left outer join schedule_info schedulein3_ on campaign2_.id = schedulein3_.campaign_id
where
campaignpl0_.super_campaign_id = ?
Share
Improve this question
asked Mar 30 at 7:38
Opt SDOpt SD
213 bronze badges
1
- You get the planning, which has a non- lazy campaign, which has a non lazy campaign again (in the form of the parent), which also retrieve the schedule info. So at first sight I would say nothing is wrong with this it does exactly what you ask it to do (which might nog be what you expect but that is how you configured your mappings). – M. Deinum Commented Mar 31 at 7:20
1 Answer
Reset to default -1Is it required to put fetchtype.lazy on supercampaign attribute? The only place where the supercampaignid is used in the where clause as per what you have put in the @JoinColumn on supercampaign it should be referring to the list of campaign in the parent class by its id ,so,did you check removing manytoone attribute?
本文标签: javaHibernate Genarate Query is unexpectedStack Overflow
版权声明:本文标题:java - Hibernate Genarate Query is unexpected - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1743994214a2515282.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论