Hibernate SqlProjection-不能使用实体名称,也不能使用{alias}进行比较

Hibernate SqlProjection-不能使用实体名称,也不能使用{alias}进行比较,hibernate,criteria,hibernate-criteria,Hibernate,Criteria,Hibernate Criteria,我有一个由两部分组成的问题 我使用标准和预测来检索数据。我正在将结果数据集映射到DTO。我不得不使用SqlProjection来获取一些数据,但sql projection似乎不接受实体名,而是接受数据库中的表名。 我不能用下面这样的东西 .add(Projections.sqlProjection("(select count(c.someData) from EntityName c where c.id= " + passedID + ") as someDataF

我有一个由两部分组成的问题

我使用标准和预测来检索数据。我正在将结果数据集映射到DTO。我不得不使用SqlProjection来获取一些数据,但sql projection似乎不接受实体名,而是接受数据库中的表名。 我不能用下面这样的东西

.add(Projections.sqlProjection("(select count(c.someData) 
     from EntityName c where c.id= " + 
     passedID + ") as someDataField",  
     new String[] { "someDataField" }, 
     new Type[] { IntegerType.INSTANCE }))
但如果我替换为列名和表名,它就可以工作了。这样,

.add(Projections.sqlProjection("(select count(c.SOME_DATA_COLUMN) 
         from TABLE_NAME c where c.ID_COLUMN= " + 
         passedID + ") as someDataField",  
         new String[] { "someDataField" }, 
         new Type[] { IntegerType.INSTANCE }))
为什么会这样

此外,我还有一个实体,它扩展了一个类“Auditable”,该类有一个字段“createdBy”。Auditable包括几乎所有表都通用的字段,如“记录状态”、“创建人”、“创建日期”等。 我正在尝试从Users实体中检索数据,该实体对应于Users\u表。 我在表中有First_Name和Last_Name列以及User_ID,所有Varchar,字段都在entity中

每个表中的“按列创建”引用“用户”表中的“用户ID”

现在,我想用createdBy字段检索名字和姓氏

我写了一个sqlProjection和其他Projection。情况如下

.add(Projections.sqlProjection(
     "(select concat(user.First_Name, ' ', user.Last_Name) from USERS_TABLE user " 
                    + "where user.User_ID = {alias}.mappedParentEntity.createdBy) as createdBy",  
                     new String[] { "createdBy" }, 
                     new Type[] { StringType.INSTANCE }))
{alias}指根实体的别名

我得到一个错误,上面写着

where子句中的未知列“this.mappedParentEntity.createdBy”


这个问题的解决方案是什么?

尝试先使用别名连接到父级,然后在where:parentAlias.createdBy中使用{alias}.mappedpparententity。createdBy@Najera您是否建议我使用“createAlias”和Left Join创建一个别名,然后在sqlProjection中使用该别名?我会试着回去报到。但如果可能的话,我会打电话给你。