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

具有两个表和集合的HIbernate标准

壤驷凯
2023-03-14

我有两张桌子,

Table Customer
ID  |  CustomerNumber  |  Name  |  City  |  PhoneNumber

Table Accounts
ID  |  CustomerNumber  |  AccountNumber  |  Bank

这两个表之间的关系是CustomerNumber

我的客户地图

public class Customer {
    @Id
    @Column(name = "ID")
    private Integer ID;
    @Column(name = "CustomerNumber")
    private Integer customerNumber;
    @Column(name = "Name")
    private String name;
    @Column(name = "City")
    private String city;
    @Column(name = "PhoneNumber")
    private Integer phoneNumber;
    @OneToMany(fetch = FetchType.LAZY, mappedBy = "customerNumber")
    private Collection<Account> accounts;
}

以及账户映射

public class Account {
    @Id
    @Column(name = "ID")
    private Integer ID;
    @JoinColumn(name = "CustomerNumber", referencedColumnName="CustomerNumber")
    @ManyToOne(fetch = FetchType.LAZY)
    private Customer customer;
    @Column(name = "AccountNumber")
    private Integer accountNumber;
    @Column(name = "Bank")
    private String bank;
}

函数i DAO

public SearchResult listByCriteria(Customer object, int maxResults, String sortProperty, boolean ascending) {
    SearcResult result = new SearchResult();
    int resultSize = 0;
    Criteria customerCriteria = ((Session)em.getDelegate()).createCriteria(Customer.class);
    if(maxResults > 0) {
        customerCriteria.setMaxResults(maxResults);
    }
    try {
        if(object != null) {
            customerCriteria = QueryHelper.getCustomerCriteria(object, customerCriteria, "");
            resultSize = QueryHelperUtil.countResults(customerCriteria);
            result.setSize(resultSize);
            customerCriteria.setFirstResult(index);
            QueryHelperUtil.sortResults(customerCriteria, sortProperty, ascending);
            result.setList(customerCriteria.list());
        }
    } catch (Exception ex) {
        error(ex);
    }
    return result;
}

QueryHelper。getCustomerCriteria

public static Criteria getCustomerCriteria(Customer object, Criteria criteria, String alias) {
    if (object != null) {
        if (object.getCustomerNumber() != null && object.getCustomerNumber() > 0) {
        criteria.add(Restrictions.eq(alias+"customerNumber", object.getCustomerID()));
        }
        if (!StringUtil.isNullOrEmpty(object.getName())) {
        criteria.add(Restrictions.like(alias+"name", QueryHelperUtil.createLikeStatement(object.getName())));
        }
        if (!StringUtil.isNullOrEmpty(object.getCity())) {
        criteria.add(Restrictions.like(alias+"city", QueryHelperUtil.createLikeStatement(object.getCity())));
        }
        if (object.getPhoneNumber())) {
        criteria.add(Restrictions.eq(alias+"phoneNumber", object.getPhoneNumber()));
        }
    }
}

现在我只想搜索有银行账户的客户。我想在Hibernate中设置一个条件。但我就是不知道怎么做?

搜索时,您可以输入客户编号、客户名称、电话号码和/或城市,并选择要显示多少结果。

首先,我想我可以编写一个命名查询,但之后你就有了搜索结果编号和在不同列上对结果进行排序的功能

我在这里搜索了一下,看了不同的类似问题,但我就是没法找到答案。我试图在一个函数中为帐户添加一个条件,以便按条件列出客户,但它就是不起作用,我不知道这是否与帐户是一个集合有关?

有人能帮帮我吗?

我在我的方法listbycriteria中添加了以下内容

customerCritera.setFetchMode("accounts",FetchMode.JOIN);
Criteria accountCriteria = customerCriteria.createAlias("accounts","accounts");

在if(Object!=null)和结果大小=QueryHelperUtil.count结果之间;

共有1个答案

白子昂
2023-03-14

我不知道你是如何决定什么账户是银行账户的。然而,你可能想要这样的东西:

   Criteria criteria = getCurrentSession().createCriteria(Customer.class,"cust");
   criteria.createAlias("cust.accounts","acc");
   criteria.list();

要检查帐户是否有银行号码,请添加:

.add(Restrictions.isNotNull("acc.bank"));

在那之前。列表()

 类似资料:
  • 问题内容: 我有两个表(表A和表B)。 它们具有不同的列数-假设表A具有更多列。 如何合并这两个表,并为表B没有的列获取空值? 问题答案: 为具有较少列的表添加额外的列作为null

  • 问题内容: 我想从具有不同列名的两个表中返回一行结果集,每个表中的每一行一行。 结果应如下所示,空格可以为null,第二半的team_id来自coach_id: 这是模式: 试过这个,但还没真正接近: 问题答案: nulnullry这

  • 问题内容: 我一直遇到这个问题: 我想让hibernate管理一个表示集合集合的表。例如: 地图地图 套装清单 清单地图 例如,我希望能够代表这一点: 作为一个表: 没有自定义的hibernate代码似乎是不可能的,我不介意。但是我希望有人对自定义代码的外观有所指导。 我应该扩展AbstractPersistentCollection吗? CompositeUserType? 可以管理多个表是否正

  • 问题内容: 我正在使用Python进行一些数据分析。我有两个表,第一个(叫它“ A”)有1000万行和10列,第二个(“ B”)有7300万行和2列。他们有1个具有共同ID的列,我想根据该列将两个表相交。特别是我想要表的内部联接。 我无法将表B作为pandas数据框加载到内存中,以在pandas上使用常规合并功能。我尝试通过读取表B上的文件的块,将每个块与A相交,并将这些交集连接起来(内部联接的输

  • 现在我正在使用Criteria Hibernate查询从员工表中查询所有记录,它工作正常。我需要将员工表与库表联接,其中库。Emp_Id=员工。Emp_id我是否需要从员工表中获取所有记录,并从库表中获取书名和结账日期,作为联接选择查询的一部分。我该怎么做?

  • 假设这两个对象有相同的键;