Mysql JPA一对一映射FetchType.LAZY不工作

Mysql JPA一对一映射FetchType.LAZY不工作,mysql,jpa,Mysql,Jpa,我有两个实体,如下所示 @Entity @Table(name = "ticket") public class Ticket { @OneToOne(fetch=FetchType.LAZY, targetEntity = com.vahana.entity.TicketBookingAdditionalInfo.class, mappedBy = "ticket", cascade = CascadeType.MERGE) private TicketBookingAddi

我有两个实体,如下所示

@Entity
@Table(name = "ticket")
public class Ticket {

    @OneToOne(fetch=FetchType.LAZY, targetEntity = com.vahana.entity.TicketBookingAdditionalInfo.class, mappedBy = "ticket", cascade = CascadeType.MERGE)
    private TicketBookingAdditionalInfo ticketBookingAdditionalInfo;

}

@Entity
@Table(name = "ticket_booking_additional_info")
public class TicketBookingAdditionalInfo {

    /** The ticket. */
    @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
    @JoinColumn(name = "ticket_id", columnDefinition = "BIGINT UNSIGNED")
    private Ticket ticket;

}
我的票务表包含40000多条记录,但票务预订附加信息没有任何数据。仅当我要添加其他信息时,此表才会包含数据

在选择ticket table时,它会加入ticket\u booking\u additional\u info表,并且该查询需要更多的时间

我在@OneToOne中添加了fetch=FetchType.LAZY,但仍然需要很长时间才能响应。这是我数据库中最耗时的查询。如何避免这个问题。请有人指导我

我正在使用mysql数据库,

@Entity
@Entity
@Table(name = "ticket")
public class Ticket {

    //Default is lazy
    @OneToMany(mappedBy = "ticket", cascade = CascadeType.MERGE)
    private List<TicketBookingAdditionalInfo> ticketBookingAdditionalInfo;

}

@Entity
@Table(name = "ticket_booking_additional_info")
public class TicketBookingAdditionalInfo {

    // The ticket. 
    //Default is eager
    @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
    @JoinColumn(name = "ticket_id", columnDefinition = "BIGINT UNSIGNED")
    private Ticket ticket;

}
@表(name=“ticket”) 公务舱票{ //默认值是懒惰的 @OneToMany(mappedBy=“ticket”,cascade=CascadeType.MERGE) 私人列表票务预订附加信息; } @实体 @表(name=“机票预订附加信息”) 公共类票务预订附加信息{ //票。 //违约迫在眉睫 @manytone(fetch=FetchType.LAZY,cascade=CascadeType.MERGE) @JoinColumn(name=“ticket\u id”,columnDefinition=“BIGINT UNSIGNED”) 私家票; }
注意 如果你有一个多音,逆关系是一个多音;如果你有一个多音,逆关系是一个多音。您应该看到教程

  • 举例
  • 举例
  • 举例

你的地图没有意义。如果一侧有多个one,则另一侧应该有一个OneToMany,而不是OneToOne。此外,根据JPA规范,FetchType.EAGER定义了每个JPA实现必须遵守的行为,而FetchType.LAZY是一种提示-->行为可能因您使用的持久性提供程序而异。您使用的是什么JPA实现?谢谢,让我检查一下OneToMany映射,而不是OneToOne映射。@Akalya如果您用下面的答案解决了问题,请告诉我们。如果是,您应该标记为已解决,还可以添加更多详细信息吗?@Xstian-我在本地系统中已经完成了,它工作正常,只有在将其移动到生产环境后,我才能获得实际结果。搬家还需要几天时间。肯定会更新详细信息。