【发布时间】:2021-06-05 13:45:00
【问题描述】:
我正在尝试将会话范围的购物车持久化到休眠状态,但我似乎无法这样做,因为数据库中持久化的购物车与会话中的购物车不同,有没有办法解决这个问题?
@SessionScope
@Service
public class AuthSuccessHandler implements AuthenticationSuccessHandler {
@Autowired
private Cart cart;
@Autowired
private UserRepository userRepository;
@Override
public void onAuthenticationSuccess(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse,
Authentication authentication) throws IOException, ServletException {
User user = (User) authentication.getPrincipal();
HttpSession session = httpServletRequest.getSession();
user.setCart(cart);
System.out.println(cart.getTest());
// shopping cart is not the same as the autowired one
userRepository.saveAndFlush(user);
System.out.println(cart.getTotal());
}
}
用户类
@Entity
public class User implements UserDetails, Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@OneToOne(cascade=CascadeType.ALL)
private Cart cart;
购物车类
@Component
@Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS)
@Entity
public class Cart implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@OneToMany(mappedBy = "cart", cascade = CascadeType.ALL)
private List<CartItem> cartItems;
@OneToOne(mappedBy = "cart")
private User user;
private long test;
【问题讨论】:
标签: spring spring-boot hibernate jpa session