【问题标题】:querysyntaxexception in Hibernate even if i give class and entity name in HQL with proper mapping即使我在 HQL 中使用正确的映射给出类和实体名称,Hibernate 中的 querysyntaxexception
【发布时间】:2015-06-26 05:27:45
【问题描述】:

我正在研究休眠。我低于异常

org.hibernate.hql.ast.QuerySyntaxException: DBCDataSource is not mapped [from DBCDataSource where upper(datasourceType) = upper('BAC_MANAGEMENT')]

我在网上搜索并得到了答案,因为在 HQL 中我们需要使用类名和属性名而不是表名和列名。查询使用的是列名,所以我已经将它更改为使用属性名,之后也出现了异常。我已经在 HIbernate.cfg.xml 中检查了任何丢失的映射,但我发现映射是正确的。在下面找到ma代码。

previous query-->list =  session.createQuery("from DBCDataSource where upper(DATASOURCE_TYPE) = upper('" + type +"')").list();
DATASOURCE_TYPE is a column name

Modified to-->list =  session.createQuery("from DBCDataSource where upper(datasourceType) = upper('" + type +"')").list();
datasourceType is a propery name mapped to tat column.

实体类

@Entity
@Table(name="dict_db_ds")
public class DBCDataSource implements Serializable{
.
.
.

@Column(name = "DATASOURCE_TYPE")
    private String datasourceType;

}

休眠.cfg.xml

..
..
 <mapping class="com.hp.bto.bsmr.collection.dao.omi.DBCDataSource" /> 
..
..

我还想念吗?

请多多指教..

谢谢。

【问题讨论】:

    标签: java hibernate


    【解决方案1】:

    你可以试试这个

     list =  session.createQuery("from DBCDataSource where "
                  +"upper(datasourceType) =:type")
                 .setParameter("type", type)
                 .list();
    

    【讨论】:

    • 我已经尝试过了,但异常仍然存在。所以我尝试使用另一种方法,即 createSqlQuery() 方法,用表和列名替换所有类和属性名。我得到了输出。 . 但它在迭代时会影响其他部分和大多数地方.. 所以需要某种方法来仅通过 createQuery 或 HQL 对其进行排序..
    • 你也遇到同样的异常吗??
    • 是的,在根据您的建议进行修改后,我得到了相同的异常..但是在使用 createSqlQuery 而不是 createQuery 之后,该异常不会出现,但会影响程序的其他部分。所以试图找出一些使用 createQuery 或 HQL 来解决的方法。有什么其他的建议可以吗??
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-28
    • 2015-04-11
    • 1970-01-01
    • 2020-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多