我正在处理与数据库中延迟加载的对象相关的问题。
假设我们有以下实体。
@Entity(name = "User")
@Table(name = "USERS")
public class User{
@Id
@GeneratedValue
private int id
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="NOTES_ID")
private List<Note> notes;
}
而Dto将是
@Mapper
public interface UserDtoMapper{
/** the INSTACE HERE **/
User fromDto(UserDto dto);
UserDto toDto(User user);
}
因此,这可能是获取所有用户而不会产生EJBException的最佳方法,因为我正在提取它们的懒惰?
答案 0 :(得分:0)
您可以使用Mapstruct来延迟加载所需的所有实体(假设会话仍处于活动状态)。使用ignore注释可以忽略您不想要的已卸载代理。更多细节在这里。 Can MapStruct do a deep deproxy of Hibernate Entity Classes
答案 1 :(得分:0)
您可以使用忽略选项。
@Mapping(source = "user.id", target = "userId", ignore = true)
但是以这种方式,您无法映射诸如渴望获取类型的关系字段。