首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在控制台应用程序中通过hibernate使用spring-data-jpa时延迟加载收集

如何在控制台应用程序中通过hibernate使用spring-data-jpa时延迟加载收集
EN

Stack Overflow用户
提问于 2013-02-18 22:37:07
回答 3查看 48.1K关注 0票数 31

我有一个小的控制台应用程序,我正在使用带有hibernate的spring-data-jpa。在一个独立的控制台应用程序中,当使用spring-data-jpa和它的存储库时,我真的不知道如何延迟初始化集合。下面是我的一些代码:

代码语言:javascript
复制
@Entity
public class User {
...
    @OneToMany(cascade=CascadeType.ALL)
    @JoinColumn(name="USER_ORDER_ID")
    private Set<Order> orders = new HashSet<Order>();
...
}

存储库:

代码语言:javascript
复制
public interface UserRepository extends PagingAndSortingRepository<User, Long> {

    public ArrayList<User> findByFirstNameIgnoreCase(String firstName);
}

服务实施:

代码语言:javascript
复制
@Service
@Repository
@Transactional
public class UserServiceImpl implements UserService {
    @Autowired
    private UserRepository userRepository;

public ArrayList<User> findByFirstNameIgnoreCase(String firstName) {
    ArrayList<User> users = new ArrayList<User>();
    users = userRepository.findByFirstNameIgnoreCase(firstName);
    return users;
}

我的主要方法:

代码语言:javascript
复制
...
user = userRepository.findByFirstNameIgnoreCase("john").get(0);
orders = user.getOrders();
for (Order order : orders) {
  LOGGER.info("getting orders: " + order.getId());
}    

foreach循环得到一个异常:

org.hibernate.LazyInitializationException:延迟初始化role: com.aki.util.User.orders集合失败,未关闭任何会话或会话org.hibernate.LazyInitializationException:延迟初始化role集合失败:

请注意,当我使用某种类型的OpenSessionInViewFilter从when应用程序运行此程序时,不会出现此问题。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14938748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档