Java onetomany偷懒冬眠essue

Java onetomany偷懒冬眠essue,java,hibernate,Java,Hibernate,我有一个懒惰的抓取问题,我不知道为什么会发生。 我有两个实体: @Entity @Table(name = "PERSONS") public class Persons { ... @OneToMany(mappedBy = "person", cascade = CascadeType.ALL, fetch = FetchType.LAZY) public List<Cards> cards = new ArrayList<Cards>()

我有一个懒惰的抓取问题,我不知道为什么会发生。 我有两个实体:

@Entity
@Table(name = "PERSONS")
public class Persons {

    ...

    @OneToMany(mappedBy = "person", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    public List<Cards> cards = new ArrayList<Cards>();

    ...
}
和个人存储库:

@Repository
@Transactional
public class PersonRepository {
    @Autowired
    private SessionFactory sessionFactory;
    public List<Persons> getAll() {
        return getSession().createCriteria(Persons.class).list();
    }
    protected Session getSession() {
        return sessionFactory.getCurrentSession();
    }
}
` 我确实错误地使用了sql查询

我在appcontroller类中配置记录器:

@RequestMapping(value = {"/", "/home"}, method = RequestMethod.GET)
public String homePage(ModelMap model) {
    model.addAttribute("greeting", "Welcome to the first page of the project");
    List<Persons> personsList = personService.getUsers();
    if (Const.DEBUG) {
        if (logger.isDebugEnabled()) {
            for (Persons persons : personsList) {
                logger.debug("Array Card size " + persons.getCards().size() + " for " + persons.getNickname());
                for (Cards card : persons.getCards()) {
                    logger.debug("CardName " + card.getCardName());
                }
            }
        }
    }
    return "welcome";
}
这意味着用户“vvv”只有一张卡,延迟获取不起作用

班级人事服务:

    @Service
    @Transactional
    public class PersonService {

        ...

        @Autowired
        PersonRepository personRepository;

        public List<Persons> getUsers() {
            List<Persons> personList = new ArrayList<>();
            for (Persons person : personRepository.getAll()) {
                if (person.getRole().getRoleType().equals("USER"))
                    personList.add(person);
            }
            return personList;
        }

        ...
    }
@服务
@交易的
公共类人员服务{
...
@自动连线
个人知识库;
公共列表getUsers(){
List personList=新建ArrayList();
for(personperson:personRepository.getAll()){
if(person.getRole().getRoleType().equals(“用户”))
personList.add(person);
}
回归人格;
}
...
}

我哪里搞错了?

hibernate在控制台中打印了什么sql查询?需要澄清的是,当getAll()退出时,卡已经被提取了?添加sql查询。是的,有人拿了卡,可能出了什么问题。我认为注释@OneToMany(mappedBy=“person”,cascade=CascadeType.ALL,fetch=FetchType.LAZY)不起作用?Sql查询不连接
卡片
表,但它连接
城市
滚轴
表。所以
fetch=FetchType.LAZY
列表卡上运行。
@RequestMapping(value = {"/", "/home"}, method = RequestMethod.GET)
public String homePage(ModelMap model) {
    model.addAttribute("greeting", "Welcome to the first page of the project");
    List<Persons> personsList = personService.getUsers();
    if (Const.DEBUG) {
        if (logger.isDebugEnabled()) {
            for (Persons persons : personsList) {
                logger.debug("Array Card size " + persons.getCards().size() + " for " + persons.getNickname());
                for (Cards card : persons.getCards()) {
                    logger.debug("CardName " + card.getCardName());
                }
            }
        }
    }
    return "welcome";
}
[DEBUG] 2017-05-02 08:32:46 com.team.mvc.controller.AppController:homePage:55 - Array Card size 0 for Alex
[DEBUG] 2017-05-02 08:32:49 com.team.mvc.controller.AppController:homePage:55 - Array Card size 0 for ui1
[DEBUG] 2017-05-02 08:32:50 com.team.mvc.controller.AppController:homePage:55 - Array Card size 0 for ui2
[DEBUG] 2017-05-02 08:32:50 com.team.mvc.controller.AppController:homePage:55 - Array Card size 1 for vvv
[DEBUG] 2017-05-02 08:32:51 com.team.mvc.controller.AppController:homePage:57 - CardName null
[DEBUG] 2017-05-02 08:32:53 com.team.mvc.controller.AppController:homePage:55 - Array Card size 1 for Sam
[DEBUG] 2017-05-02 08:32:54 com.team.mvc.controller.AppController:homePage:55 - Array Card size 0 for Alex
[DEBUG] 2017-05-02 08:32:54 com.team.mvc.controller.AppController:homePage:57 - CardName null
[DEBUG] 2017-05-02 08:32:55 com.team.mvc.controller.AppController:homePage:55 - Array Card size 0 for Alex
[DEBUG] 2017-05-02 08:32:56 com.team.mvc.controller.AppController:homePage:55 - Array Card size 0 for ui1
[DEBUG] 2017-05-02 08:32:56 com.team.mvc.controller.AppController:homePage:55 - Array Card size 0 for ui1
[DEBUG] 2017-05-02 08:32:56 com.team.mvc.controller.AppController:homePage:55 - Array Card size 0 for 7
[DEBUG] 2017-05-02 08:32:56 com.team.mvc.controller.AppController:homePage:55 - Array Card size 0 for ui2
    @Service
    @Transactional
    public class PersonService {

        ...

        @Autowired
        PersonRepository personRepository;

        public List<Persons> getUsers() {
            List<Persons> personList = new ArrayList<>();
            for (Persons person : personRepository.getAll()) {
                if (person.getRole().getRoleType().equals("USER"))
                    personList.add(person);
            }
            return personList;
        }

        ...
    }