当前位置: 首页 > 面试题库 >

如何使用Hibernate检索类的成员对象?

韩博简
2023-03-14
问题内容

使用以下代码,我可以成功检索用户的地址字段,为此,我需要使用Projection定义其所有字段。想象地址有100个字段,在这种情况下,我必须定义所有字段。

我想知道是否可以仅返回客户的地址对象而不在Proposition中定义其所有字段吗?

我知道我可以检索地址的ID并使用它来检索其对象,但是我想知道是否还有其他方法而不是此方法或定义其所有字段。

hibernate

            .....
            Criteria cre = session.createCriteria(User.class, "user")
                    .createAlias("user.address", "addr");

            cre.add(Restrictions.eq("user.id", ID));

            ProjectionList pl = Projections.projectionList();
            pl.add(Projections.property("addr.id").as("id"));
            pl.add(Projections.property("addr.unit").as("unit"));
            .......
            cre.setProjection(pl);
            Address address = (Address) cre.list().get(0);

我也使用了以下内容,但遇到错误 (无法解析属性:com.myProject.User的地址)

    pl.add(Projections.property("addr").as("address"));

爪哇

@Entity
public Class User {

     @Id
     @GeneratedValue
     private long id;

     @OneToOne
     private Address address;

     ...
}

问题答案:

使用JPQL / HQL:

select a from User u join u.address a where u.id = :userId

Criteria
API比JPQL更为受限制,除根实体外不能选择任何其他实体。如果查询不是必须动态组成的,则不应使用它。当然,如果关联是双向的,则可以简单地使用

select a from Address a where a.user.id = :userId

或其等效标准:

Criteria c = session.createCriteria(Address.class, "a");
c.createAlias("a.user", "u");
c.add(Restrictions.eq("u.id", userId));


 类似资料:
  • 问题内容: 这个问题是我先前的问题的后续。我需要检索复杂类的列表。 我需要找到一个特定组的学生列表,这些学生位于特定的位置,其电话号码位于其地址中。我还需要显示每个学生到特定坐标的距离。 下面的代码工作正常,唯一的问题是我无法检索对象列表,例如电子邮件列表,组列表和每个学生的电话列表。 问题答案: hibernate的默认类不会传输嵌套对象,如果您遇到性能问题,应尝试以下代码。 看看这个链接和这一

  • 问题内容: 我有一个如下的类,需要使用Hibernate从数据库中检索。问题是我的班级有多个成员,其中大多数是班级,如何检索他们? 我需要检索学生ID 1及其所有课程,经销商和经销商的汽车清单。 我的预测如下,但不返回任何内容。 问题答案: 因为您具有课程列表和一组汽车,所以您只需在一个查询中获取整个图形即可: 因为您要获取两个集合,所以此查询将生成笛卡尔乘积,因此您需要确保所选的子集合没有太多条

  • 我希望在Typescript对象中存储String->string的映射,并强制所有键映射到字符串。例如: 我有办法强制要求值必须是字符串(或任何类型..)吗?

  • 我尝试使用GitHub API和endpoint检索GitHub用户的成员身份详细信息。 我是多个组织的成员,但我得到的回应是: 所以没有为我的用户显示会员信息。我有一个范围为的访问令牌。我错过什么了吗?我在官方API文档https://developer.github.com/v3/orgs/members/#list-your-organization-memberships中也找不到任何相关

  • 我正试图从一个站点获取一个数字(比特币的价值),使用下面的代码 它应该打印一个数字,但它没有打印。我尝试使用其他模块,如.gettext,但结果总是没有。我可以用什么来获得我想要的值?

  • 问题内容: 该函数的第一行在:类上获取错误。 我遵循Django文档教程,并且它们具有相同的代码并正在运行。 我尝试调用一个实例。 也是我该类的models.py代码是… 无济于事,我仍然有这个错误。 我已经读过有关pylint的文章并进行了运行… 这没有帮助,即使github自述文件说… 防止有关Django生成的属性(例如Model.objects或Views.request)的警告。 我在我