【问题标题】:I have two different type of user table and I want to check mobile duplication in single query in Hibernate我有两种不同类型的用户表,我想在 Hibernate 的单个查询中检查移动重复
【发布时间】:2017-01-17 11:53:36
【问题描述】:

两个类中的类变量都很少,但我删除了它们。我尝试了联合查询,但没有用。有没有其他方法可以在单个查询中执行此操作。

这是我的联合查询:

Query query = entityManager.createQuery("select vu.mobileNumber AS mn from VillageUser vu where vu.mobileNumber = :inmobile UNION select ca.mobileNumber AS mn from CustomerAccount ca where ca.mobileNumber = :inmobile");

这是我的桌子:

public class VillageUser extends BaseEntity{

    private static final long serialVersionUID = 1L;

    @Column(name="ASSEMBLY_USER_ID")
    private Long auAccountId;

    @Column(name="FULL_NAME")
    private String fullName;

    @Column(name="USER_TYPE")
    private String userType;

    @Column(name="MOBILE_NUMBER")
    private String mobileNumber;
}

public class AssamblyUser extends BaseEntity{

    private static final long serialVersionUID = 1L;

    @Column(name="FULL_NAME")
    private String fullName;

    @Column(name="USER_TYPE")
    private String userType;

    @Column(name="MOBILE_NUMBER")
    private String mobileNumber;
}

【问题讨论】:

    标签: java mysql hibernate hibernate-criteria


    【解决方案1】:

    我终于找到了执行此操作的完美方法。

    使用 entitymanager.createNativeQuery(),如下所示:

    String mobilenumber = "1212121212";

    String querystring = "select 1 from (select MOBILE_NUMBER as mobile from VILLAGE_USER union all select MOBILE_NUMBER as mobile from CUSTOMER_ACCOUNT) a where mobile="+mobilenumber;

    查询查询 = entityManager.createNativeQuery(querystring);

    List mobile = query.getResultList();

    【讨论】:

      【解决方案2】:

      HQL 不支持联合。见this

      但是您可以使用 Union 创建 SQL 并在休眠中使用它

      session.createSQLQuery(sqlQuery).addScalar("mobileNumber",StringType.INSTANCE) 
      

      【讨论】:

      • 我正在使用实体管理器执行此操作,但不知何故我没有获得创建 sql 查询的会话。我还尝试了一个返回笛卡尔积的本机查询,但如果任何表为空,它就不起作用。有什么其他方法可以检查吗?
      • 我知道我可以对每个表使用查询,然后将两个查询结果放在一个列表中,然后检查列表。但我不想为每个表打两次数据库。
      • 你能发布原生查询吗?
      • 您可以查看此thread 以获取查询帮助。
      猜你喜欢
      • 1970-01-01
      • 2016-02-25
      • 2018-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-23
      • 1970-01-01
      相关资源
      最近更新 更多