java - Hibernate 选择错误的表名

标签 java sql hibernate

我尝试通过 Hibernate 在 mysql 数据库中插入和选择数据,Insert 对我来说工作正常,但 select 不知何故没有映射正确的表名并且没有返回结果。

获取并插入代码:

    SessionFactory sessFact = HibernateUtil.getSessionFactory();
    Session session = sessFact.getCurrentSession();
    session.beginTransaction();

    session.save(obj);
    session.getTransaction().commit();

    try {
        Session mysession = HibernateUtil.getSessionFactory().getCurrentSession();
        mysession.beginTransaction();
        weatherDataObject resultObjectHib = (weatherDataObject) mysession.get(weatherDataObject.class, 26);
        mysession.getTransaction().commit();
    } catch (Exception e) {
        e.printStackTrace();
    }
    sessFact.close();



<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="some.pack">
    <class name="weatherCoordinates" table="coordinates">
        <id name="dataBaseId" column="coordinates_id">
            <generator class="native" />
        </id>
        <property name="lat" type="string" column="coordinates_lat" />
        <property name="lon" type="string" column="coordinates_lon" />




    </class>
</hibernate-mapping>




<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="some.pack">
    <class name="weatherDataObject" table="data_object">
        <id name="id" column="data_object_id">
            <generator class="native" />
        </id>
        <property name="name" type="string" column="data_object_name" />
        <many-to-one name="coord" class="task.main.DataObjects.weatherCoordinates"
            column="coordinates_id" unique="true" not-null="true" cascade="all" />

    </class>
</hibernate-mapping>

当我看到 sql 执行字符串时,它是:

Hibernate: insert into coordinates (coordinates_lat, coordinates_lon) values (?, ?)
Hibernate: insert into data_object (data_object_name, coordinates_id) values (?, ?)
Hibernate: select weatherdat0_.data_object_id as data_obj1_1_0_, weatherdat0_.data_object_name as data_obj2_1_0_, weatherdat0_.coordinates_id as coordina3_1_0_ from data_object weatherdat0_ where weatherdat0_.data_object_id=?

问题是 weatherdat0 不知何故是错误的,我的表被称为我在文件 data_object 中映射它的方式,不知道如何以及为什么更改它,有人可以帮忙吗?

最佳答案

查询是在正确的表上生成的,因为 select 查询是在表 from data_object 上运行的

weatherdat0_ 只是 from 语句中提到的表的别名:

from data_object weatherdat0_

所以它只选择正确的表名称。

现在,如果查询没有返回任何结果,则意味着没有与该 id 匹配的记录,因此我建议您直接在数据库上运行查询,看看它是否返回任何记录。

关于java - Hibernate 选择错误的表名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26044489/

相关文章:

java - 编辑文本等于

java - Enum 是如何在内部实现的以及如何在 Java 中访问枚举的构造函数

PostgreSQL 中的 SQL 窗口函数

mysql - GROUP BY 子句但在列中具有连续(线性)值

java - 实体未映射

java - InnoDB 数据库锁定会阻塞线程

java - 使用 Java 访问 Java Applet 非静态方法

java - 构建 Grails 应用程序时出错

c# - 在 C# 中存储 SQL 结果

mysql - HHH000203 : processEqualityExpression() : No expression to process