我在Hibernate尝试了简单的程序,并发现了一堆异常。
我不知道到底是什么问题。
我有三个课程-书籍,阅读器和使用。最后一个是将前两个绑定为一对多。
这是我的main()
:
public class Appl {
public static void main(String[] args) {
Book book = new Book();
book.setTitle("book01155");
//
Reader reader = new Reader();
reader.setName("reader2");
//
Using using = new Using();
using.setIdBook(book);
using.setIdReader(reader);
//
List<Book> elements = new ArrayList<Book>();
//
Session session = null;
try {
session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
session.save(book);
session.save(reader);
session.save(using);
elements = session.createCriteria(Book.class).list();
session.getTransaction().commit();
} finally {
if (session != null && session.isOpen()) {
session.close();
}
}
for (Book b : elements) {
System.out.println("book: id=" + b.getIdBook() + " Title="
+ b.getTitle());
}
System.out.println("\nThe END.\n");
}
}
这是异常消息:
ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'USING (IDBOOK, IDREADER) values (2, 2)' at line 1
Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not execute statement
at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:82)
at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)
的摘要hiberante.cfg.xml
:
<hibernate-configuration>
<session-factory>
<property name="eclipse.connection.profile">097Hibernate</property>
<property name="connection.url">jdbc:mysql://localhost/_097_Library</property>
<property name="connection.username">root</property>
<property name="connection.password">secret</property>
<!-- property name="hbm2ddl.auto">create</property -->
<property name="hbm2ddl.auto">update</property>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<mapping class="com.softserve.edu.Book" />
<mapping class="com.softserve.edu.Reader" />
<mapping class="com.softserve.edu.Using" />
</session-factory>
</hibernate-configuration>
DB上的所有表均已创建,但为空。一切都还好。有什么建议么?
在MySQL中, USING 是保留字。
因此,只需使用实体@javax.persistence.Table
上的注释来重命名表即可Using
。就像是
@Entity
@Table(name = "TB_USING")
public class Using {
...
}
我假设您有一个用于的表USING
,但是您提到它是一对多关系,因此您可以省略该表,并仅使用Reader
表中的单个外键对其进行建模。
顺便说一下,hibernate不会强迫您为多对多联接表(除了外键之外没有其他属性)创建新实体。但是我认为,为该关系创建实体是一种好习惯,因为在大多数情况下,将来会为该关系定义一些属性。
在jboss consol中,我有这样一个错误: 但是当我使用sqldevelopper时,我没有任何问题
我得到以下错误,当我尝试添加一个应用程序和应用程序设置。以下是详细的错误消息: 下面是junit测试 这是保存应用程序和设置的方法 这些是DAO类。 这是应用刀 为什么我会得到上面的错误?如果你们需要更多的信息,请告诉我。 更新
问题内容: 我正在尝试建立一个小的Hibernate工作样本,该样本在这里找到。但是,当我运行代码时,出现以下错误 但是我已经在数据库中有了一个名为“ person”的表,这是我修改后的hibernate.cfg.xml 谁能指出我在做什么错,那太好了,因为这是我第一次在Hibernate中尝试。谢谢! 编辑:Person.hbm.xml EDIT-II:日志文件(Postgresql.log)的
我无法获取结果,create查询正在执行,但之后将其转换为list无法工作。请帮我解决这个问题。为什么它没有被转换成列表我无法获取结果,创建查询正在被执行,但之后将它转换成列表不起作用。请帮我解决这个问题。为什么它没有被转换成列表 表脚本 bean类 控制器方法是: 错误日志 null AnswerEntity类
我已经将支持JAR和jdbc驱动程序添加到我的项目中,但我仍然得到了低于例外情况 getting找不到resultset异常错误执行load命令:getting sqlgrammerexception 我的配置文件
这是我的POJO类,名为Student,我为它创建了一个表来更新标记。 这是我的主要班级 当我尝试执行该操作时,它显示了另一个错误,错误是“student0_”。“verson”:无效标识符