我有一个小的控制台应用程序,我正在使用带有hibernate的spring-data-jpa。在一个独立的控制台应用程序中,当使用spring-data-jpa和它的存储库时,我真的不知道如何延迟初始化集合。下面是我的一些代码:
@Entity
public class User {
...
@OneToMany(cascade=CascadeType.ALL)
@JoinColumn(name="USER_ORDER_ID")
private Set<Order> orders = new HashSet<Order>();
...
}
存储库:
public interface UserRepository extends PagingAndSortingRepository<User, Long> {
public ArrayList<User> findByFirstNameIgnoreCase(String firstName);
}
服务实施:
@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;
}
我的主要方法:
...
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应用程序运行此程序时,不会出现此问题。
https://stackoverflow.com/questions/14938748
复制相似问题