当前位置: 首页 > 知识库问答 >
问题:

Hibernate嵌套属性别名

杜烨伟
2023-03-14

我有这门课:

@Entity
@Table(name = "TOPUP_MESSAGE")
public class ReportFee {
  //... ID & Other Properties
  @ManyToOne
  @JoinColumn(name="CONTRACT_ID")
  private ContractDetail contractDetail;
  //GETTERS AND SETTERS
}

ContractDetail类如下所示:

@Entity
@Table(name = "CONTRACT_DETAIL")
public class ContractDetail {

  //... ID & Other Properties
  @ManyToOne
  @JoinColumn(name = "CONTRACT_ID")
  private Contract contract;
  //GETTERS AND SETTERS
}
@Entity
@Table(name = "CONTRACT")
public class Contract implements {

  //... ID & Other Properties
  @ManyToOne
  @JoinColumn(name = "OPERATOR_ID")
  private Operator operator;
  //GETTERS AND SETTERS
}
Session session = (Session)this.em.getDelegate();
Criteria crit = session.createCriteria(getEntityClass());
crit = crit.createAlias("contractDetail", "cd", JoinType.LEFT_OUTER_JOIN);
crit = crit.createAlias("contract", "c", JoinType.LEFT_OUTER_JOIN);
crit = crit.createAlias("operator", "op", JoinType.LEFT_OUTER_JOIN);

Criterion c= Restrictions.eq("cd.cd.op", operator);

crit.add(c);

List result = crit.list();
----ReportFee (private ContractDetail contractDetail)

       |

        ------ ContractDetail (private Contract contract)

                      |

                       -------- Contract (private Contract contract)

共有1个答案

单于经纬
2023-03-14

我在如下定义嵌套层次结构时解决了这个问题:

Session session = (Session)this.em.getDelegate();
Criteria crit = session.createCriteria(getEntityClass());
crit = crit.createAlias("contractDetail", "cd", JoinType.LEFT_OUTER_JOIN);
crit = crit.createAlias("cd.contract", "c", JoinType.LEFT_OUTER_JOIN);

Criterion criterion= Restrictions.eq("c.operator", operator);

crit.add(c);

List result = crit.list();
 类似资料:
  • 问题内容: 我在映射类的嵌入式属性时遇到麻烦。我创建了一些类,这些类与我试图说明的类相似。基本上,我有一个使用继承的@Embeddable类层次结构。顶级类“零件号”只有一个属性,扩展类没有为“零件号”类添加属性,它们仅添加了一些验证/逻辑。 这是我的意思: 部分 零件号 福特PARTNUMBER 高贵的零件编号 当然这是行不通的,因为Hibernate忽略了继承层次结构,并且不喜欢PartNum

  • 问题内容: swift没有嵌套类吗? 例如,我似乎无法从嵌套类访问主类的属性测试。 问题答案: Swift的嵌套类与Java的嵌套类不同。好吧,它们就像是Java的一种嵌套类,而不是您正在考虑的那种。 在Java中,内部类的实例会自动引用外部类的实例(除非声明了内部类)。如果您有外部类的实例,则只能创建内部类的实例。这就是在Java中您说类似的原因。 在Swift中,内部类的实例独立于外部类的任何

  • 我在一个项目中有一个奇怪的需求。加入两个n: m属性表(我将用虚拟属性呈现行为)。 第一表(idPlace、idAddress、idSchool、wage)加入1:m 当然,我有表地方,地址,学校,企业与他们各自的ID,获取,集合和属性在实体类中实现。 代码: 位置 地址 学校 第一桌 FirstTablePK 上面提到的表和联接工作得很好。现在我想把第一个表和第二个表连接起来。 企业号 现在,对

  • 我试图提供一种方法,在一个模型中生成一个新对象(列表),在另一个模型中使用has_many关系(通过分组)生成一个新的关联对象(项目)。我能够让表单工作正常,但无法弄清楚为了正确完成创建过程,我缺少什么。 Rails v.5.1.2,Ruby v.2.4.1 lists_controller.rb items_controller.rb list.rb模型 item.rb模型 grouping.r

  • 我有以下build.xml代码。在这里,我在jar文件中修改了清单文件。在清单中,我想添加一些属性,例如资产名称和资产基线。 buildInfo的内容。属性如下: build.xml:我想动态传递名称,即 articlelib 值,并从 buildInfo.properties 中检索值。我在清单外部使用了宏元数据,它是工作文件,但当我在清单标签中使用相同的时,我无法使用它。我是否可以解决此问题或

  • 我正在尝试反序列化一个 JSON 响应,其中包含一些标准字段和一个包含子类属性的 嵌套对象,例如: 字段< code>id和< code>type是标准的,所以我有一个基类< code>Base,然后扩展一些更具体的类: 如何让杰克逊读取 对象作为进一步字段值的来源?我假设我需要创建一个自定义反序列化程序,但我不确定如何具体完成此操作。