gpt4 book ai didi

java - 生成的查询中的 Hibernate SQL 错误(可能是映射错误)

转载 作者:行者123 更新时间:2023-11-29 02:44:15 24 4
gpt4 key购买 nike

我正在使用 Hibernate 制作这个简单的应用程序来执行一些 CRUD 操作。我在 hibernate 生成的查询中遇到了这个错误

配置文件:

<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/library</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">123456</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<property name="hibernate.default_schema">library</property>
<property name="hbm2ddl.auto" value="create"/>
<!-- Mappings -->
<mapping resource="librarysystem/mappings/Role.hbm.xml"/>
<mapping resource="librarysystem/mappings/Librarian.hbm.xml"/>
<mapping resource="librarysystem/mappings/Task.hbm.xml"/>
<mapping resource="librarysystem/mappings/Library.hbm.xml"/>
</session-factory>
</hibernate-configuration>

POJO:

public class Library  implements java.io.Serializable {

private int id;
private String name;
private Set librarians = new HashSet(0);

//Constructors, getters and setters...
}

映射:

<hibernate-mapping>
<class name="librarysystem.entities.Library" table="library" catalog="library" optimistic-lock="version">
<id name="id" type="int">
<column name="id" />
<generator class="assigned" />
</id>
<property name="name" type="string">
<column name="name" length="45" />
</property>
<set name="librarians" table="librarian" inverse="true" lazy="true" fetch="select">
<key>
<column name="libraryid" not-null="true" />
</key>
<one-to-many class="librarysystem.entities.Librarian" />
</set>
</class>
</hibernate-mapping>

获取列表的代码:

List<Library> libraries = session.createQuery("FROM Library").list();

当我运行查询以获取库列表时,发生异常,提示查询语法错误

查询的日志输出为:

select
library0_.id as id1_2_,
library0_.name as name2_2_
from
library.library.library library0_

library.library.library 是如何发生的?有什么帮助吗?

我已经提供了我认为必要的最少细节。如果您需要更多代码来查找错误(如其他 POJO 和映射),请通知我

最佳答案

How did the library.library.library happened? Any help please?

我不是这里的专家,但我认为这里的 tripple 库来自数据库(目录)命名库中被命名为库的表。

<class name="librarysystem.entities.Library" table="library" catalog="library" optimistic-lock="version">

表名和目录名相同。因此,我们正在寻找一个名为库 library 的目录,其中我们需要一个名为库 library.library 的表。虽然我不是 100% 支持第三个库,但我认为我的方向是正确的。

附带说明一下,我发现使用 hibernate 注释比使用 xml 映射更容易。

关于java - 生成的查询中的 Hibernate SQL 错误(可能是映射错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45199617/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com