gpt4 book ai didi

java - 如何使用Spring data JPA(JPARepository)实现延迟加载?

转载 作者:行者123 更新时间:2023-12-02 14:30:42 25 4
gpt4 key购买 nike

我使用 Spring Data JPA 和 Hibernate 作为提供程序。我创建了几个存储库类,它们扩展到 JPARepository<Entity,Serializable>类(class)。当我获取一个实体时,我失败了,它附带了附加/连接的实体!通过 @OneToOne 连接@OneToMany等等。如何避免获取这些连接的实体?
我尝试过 @OneToMany(fetch=FetchType.LAZY)等等但仍然没有运气。以下是我的java代码:
存储库

public interface TicketRepository extends JpaRepository<Ticket, Integer>{

}

票证实体

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

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Integer id;

@Column(name = "customer", nullable = false, length = 256)
private String customer;


@OneToOne(cascade=CascadeType.ALL,fetch=FetchType.LAZY)
@JoinColumn
private User creator;

// ... other properties
}

服务

@Service
public class TicketService {

public Ticket save(Ticket obj,String id) {
User user = userService.findById(Integer.valueOf(id));
obj.setCreator(user);
Ticket savedTicket = ticketRepository.save(obj);
}
}

savedTicket总是获取我不想要的用户实体。我怎样才能实现这个目标?
enter image description here

谢谢

最佳答案

在可为空的一对一映射上进行延迟加载,您需要让 hibernate 执行此操作 Compile time instrumentation并向一对一关系添加 @LazyToOne(value = LazyToOneOption.NO_PROXY)

@OneToOne(cascade=CascadeType.ALL,fetch=FetchType.LAZY)
@JoinColumn
@LazyToOne(value = LazyToOneOption.NO_PROXY)
private User creator;

希望这会起作用。

关于java - 如何使用Spring data JPA(JPARepository)实现延迟加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27765091/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com