jointable 的用法

前任从来没有用过jointable, 官方的例子也少得可怜,先贴上一段代码

IDataQuery dq1 = session.createDataQuery();
       dq1.setTarget(session.getObjectDef("PMSF")); 
          dq1.addFilter("hs_is_deleted", SATConstants.SQL_OP_EQUAL, "0");
          IJoinTable jt1 = dq1.addJoinTable("p_prerequirements");
       
       jt1.addDisplayField("hs_uuid");
     
          IDataCollection dc1 = dq1.query(session);
          int test = 0;
         
          while (dc1.next()){
           IBusObject bus = dc1.getObject();
           
           addedreq.add(bus.getStringField("hs_uuid.secondary_obj_uuid.hs_uuid"));
           //System.out.print("PREID:"+bus.getStringField("hs_uuid.secondary_obj_uuid.hs_uuid")+",");
           //test++;
          }
        

p_prerequirements字段为multireference字段,引用了某个sfo。说下关键的:

jt1.addDisplayField("hs_uuid");这个方法最后生成的bo中的对应字段为hs_uuid.secondary_obj_uuid.hs_uuid 这个名称,满怪异的。

即hs_uuid.secondary_obj_uuid.xxxxx这种名称。

 

 single reference  字段的jointable 用法也类似,eg:

IDataQuery dq1 = session.createDataQuery();
       dq1.setTarget(session.getObjectDef("PMSF")); 
          dq1.addFilter("hs_is_deleted", SATConstants.SQL_OP_EQUAL, "0");
          IJoinTable jt1 = dq1.addJoinTable("hs_owner");
       
       jt1.addDisplayField("hs_uuid");
     
          IDataCollection dc1 = dq1.query(session);
那么join user表后的字段为 hs_owner.hs_uuid

 

最后贴上同事写的一段代码结束

  IJoinTable joinTable = dq1.createJoinTable();

                            joinTable.setJoinType(SATConstants.INNER_JOIN);

                            IObjectDef child = session.getObjectDef("S_project");

                            joinTable.setJoinObjectDef(child);

                            joinTable.setMainField("T_project_gid");

                            joinTable.setJoinField("hs_uuid");

                            joinTable.addFilter("hs_is_deleted", SATConstants.SQL_OP_EQUAL, "0");

                         joinTable.addDisplayField("S_project_name","S_project_name"); //这句意思就是select fielda as  XXXX的意思

                            dq1.addJoinTable(joinTable);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`@JoinTable` 注解用于定义两个实体类之间的多对多关系,并且指定用于关系维护的中间表的细节。 以下是 `@JoinTable` 注解的一些常用属性: - `name`:指定用于关系维护的中间表的名称。 - `joinColumns`:指定关系维护方的外键列的细节,包括列名、引用的列名等。 - `inverseJoinColumns`:指定关系被维护方的外键列的细节,包括列名、引用的列名等。 以下是一个使用 `@JoinTable` 注解的多对多关系的示例: ``` @Entity public class Student { @Id private Long id; @ManyToMany @JoinTable(name = "student_course", joinColumns = @JoinColumn(name = "student_id"), inverseJoinColumns = @JoinColumn(name = "course_id")) private Set<Course> courses = new HashSet<>(); // getters and setters } @Entity public class Course { @Id private Long id; @ManyToMany(mappedBy = "courses") private Set<Student> students = new HashSet<>(); // getters and setters } ``` 在这个示例中,我们创建了两个实体类 `Student` 和 `Course`,它们之间是多对多关系。我们使用 `@JoinTable` 注解来定义中间表,指定中间表的名称为 `student_course`,关系维护方的外键列为 `student_id`,关系被维护方的外键列为 `course_id`。 在 `Student` 实体类中,我们使用 `@ManyToMany` 和 `@JoinTable` 注解来定义多对多关系,并将多对多关系映射到 `courses` 属性中。 在 `Course` 实体类中,我们使用 `@ManyToMany(mappedBy = "courses")` 注解来定义多对多关系,并指定 `mappedBy = "courses"`,表示多对多关系的映射属性为 `courses`。 通过使用 `@JoinTable` 注解,我们可以方便地定义多对多关系,并指定用于关系维护的中间表的细节。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值