gpt4 book ai didi

java - Hibernate 获取数据 .list() 已不再使用且表未映射。该怎么办?

转载 作者:行者123 更新时间:2023-11-29 20:06:27 25 4
gpt4 key购买 nike

我在 stackoverflow 上看到了几乎所有关于此问题的问题和答案,但所有答案都是相同的。您应该使用类似这样的 Query query = session.createQuery("from theme").list();但是 .list() 已被废弃,我不能再使用它了。

所以第一个问题是,我应该使用什么来代替 .list() 以及为什么我得到这个异常 java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast .QuerySyntaxException:主题未映射[来自主题]

Query Method

public ObservableList<String> getThemes(){
ObservableList<String> obsList = FXCollections.observableArrayList();
SessionFactory factory = new Configuration()
.configure("hibernate.cfg.xml")
.buildSessionFactory();
Session session = factory.getCurrentSession();
try {
session.beginTransaction();
Query query = session.createQuery("from theme"); // why not mapped
//cant use .list()?
session.getTransaction().commit();
System.out.println("query " + query);
} catch (Exception e) {
e.printStackTrace();
}finally{
session.close();
}
return obsList; // nothing at the moment

hibernate.cfg.xml

<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.driver_class">org.sqlite.JDBC</property>
<!-- I know sqlite with an mysql dialect isnt the best, in the future it
will be mySql--> <property
name="connection.url">jdbc:sqlite:C:\\DokiDB\\database.db</property>
<property name="connection.username">progdm</property>
<property name="connection.password">release</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="connection.pool_size">1</property>
<property name="show_sql">true</property>
<property name="current_session_context_class">thread</property>
</session-factory>
</hibernate-configuration>

mapped class

@Entity
@Table(name="theme")

public class mapTheme {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="theme_id")

private int theme_id;
@Column(name="theme_name")

private String theme_name;
public int getTheme_id() {
return theme_id;
}

public void setTheme_id(int theme_id) {
this.theme_id = theme_id;
}

public String getTheme_name() {
return theme_name;
}

public void setTheme_name(String theme_name) {
this.theme_name = theme_name;
}

public mapTheme(String theme_name) {
super();
this.theme_name = theme_name;
}

public mapTheme(){
}
}

我能做什么?

最佳答案

查询时使用的表名不是数据库中表的名称,应该是实体类的名称。在这种情况下,您必须使用

Query query = session.createQuery("from mapTheme");

而不是:

Query query = session.createQuery("from theme")

关于java - Hibernate 获取数据 .list() 已不再使用且表未映射。该怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40329627/

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