关于Hibernate实体关系的疑惑

车开源 发布于 2016/05/06 22:07
阅读 183
收藏 0

假如有文章表,分类表,两者是不是文章对分类是多对一呢?

我在添加文章时,选择了分类,在保存文章时是不是要根据所选分类ID,先查出分类,再set到文章那里去?这样是不是太低效率?

求指点

========

以下以用户和部门为模拟情境:

相关代码如下:

    @Test
    public void addTest2(){
        User user = new User();
        user.setAge(30);
        user.setDepartmentId("1001");
        user.setEnabled(0);
        user.setGender("男");
        user.setGroupId("2001");
        user.setUserId("13003");
        user.setUserName("黄医师");
        user.setLastLoginTime(new Date());
        
        Org org=orgService.findOrgById("32");
        
        user.setOrg(org);
        
        userService.add(user);
        System.out.println("data saved");
    }

输出日志:

Hibernate:
    select
        org0_.org_id as org_id1_0_0_,
        org0_.org_descript as org_desc2_0_0_,
        org0_.org_name as org_name3_0_0_,
        org0_.parent_id as parent_i4_0_0_
    from
        sec_org org0_
    where
        org0_.org_id=?
Hibernate:
    select
        hibernate_sequence.nextval
    from
        dual
Hibernate:
    select
        org_.org_id,
        org_.org_descript as org_desc2_0_,
        org_.org_name as org_name3_0_,
        org_.parent_id as parent_i4_0_
    from
        sec_org org_
    where
        org_.org_id=?
Hibernate:
    insert
    into
        sec_user
        (age, department_id, enabled, gender, group_id, last_login_ip, last_login_time, org_id, password, salt, user_id, user_name, id)
    values
        (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
data saved

疑问:为什么Hibernate还会多执行一次org查询呢?如何处理这种需求?求教

加载中
0
高山流水情
高山流水情

是这样的,会多出一条查询文章分类的select语句。hibernate必须要确保文章表中分类字段的值对应到分类表的一条记录,这样才能确保多对一的关系。

另外,文章、文章分类建议设计成多对多。

0
Joyzhou
Joyzhou
getById就不需要考虑效率了
车开源
车开源
暂时效率方面也不用考虑,只是想求证面对这种情况如何处理的。
返回顶部
顶部