Java org.hibernate.tool.schema.spi.CommandAcceptanceException:无法执行命令
我不熟悉hibernate,并尝试在oracle db中映射已创建的表。在以下给定代码中:Java org.hibernate.tool.schema.spi.CommandAcceptanceException:无法执行命令,java,oracle,hibernate,Java,Oracle,Hibernate,我不熟悉hibernate,并尝试在oracle db中映射已创建的表。在以下给定代码中: Session session = sessionFactory.openSession(); Transaction transaction = session.beginTransaction(); String hql = "FROM CrbtSubMasterDemo where rownum<20"; Query query = session.createQuery(hql); Li
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
String hql = "FROM CrbtSubMasterDemo where rownum<20";
Query query = session.createQuery(hql);
List itr = query.list();
session.getTransaction().commit();
for (Iterator iterator = itr.iterator(); iterator.hasNext();)
{
System.out.println("[" + iterator.next() + "]");
}
这里的表名区分大小写。这是不匹配的
INFO: HHH000262: Table not found: sdp.crbt_subscriber_master
数据库正在尝试获取crbt\u订户\u主机
,但您已给出
String hql = "FROM CrbtSubMasterDemo where rownum
你的问题在这里: 还有一个问题。您没有完美地添加声明hql 使用此代码
String hql = "FROM CrbtSubMasterDemo where rownum";
而不是
String hql = "FROM CrbtSubMasterDemo where rownum
您还可以浏览本教程:
更新: hibernate.hbm2ddl.auto自动验证或导出架构DDL 在创建SessionFactory时将其复制到数据库。使用create drop, 关闭SessionFactory时,将删除数据库架构 明确地说 e、 g.验证|更新|创建|创建删除 因此,可能的选择列表如下: 验证:验证架构,不更改数据库 更新:更新架构 创建:创建架构,销毁以前的数据 创建删除:在会话结束时删除架构 因此,由于已经创建了数据表。然后,如果从配置中删除此属性,则将解决此问题。
<property name="hbm2ddl.auto">update</property>
更新
但是你可以试一试。这也将解决问题
<property name="hbm2ddl.auto">validate</property>
验证
或
无
有时“空字符串”比“无”好得多。要使用“none”,您将收到警告消息:org.hibernate.cfg.SettingsFactory-无法识别“hibernate.hbm2ddl.auto”的值:none我认为问题在于您在此处使用表名指定了架构名
<class name="com.telemune.demoPojo.CrbtSubMasterDemo"
table="sdp.crbt_subscriber_master">
我添加的行是:字符串hql=“来自CrbtSubMasterDemo,其中rownumsdp是数据库的名称。这是我的映射:实际上,您有一个问题,即表已经存在,需要再次调用该表来创建该表。因此,您必须检查表是否存在,然后删除它,然后尝试创建它。@yashpalbharadwaj要解析ORA-00955,请确保为数据库对象指定一个不匹配的名称。您还可以删除或修改现有对象,以便在不使用相同语法的情况下重用它。为什么多次将其称为create table sdp.crbt_subscriber_master是您的问题。是的,您可能是对的,但我应该如何解决它,以便它不会出现异常?@yashpalbharadwaj,请参阅映射示例:)顺便说一下,这是一个更简单的示例。。。谢谢你,先生@v.ladynev。先生,请您解释一下,当我用none替换update时,它解决了异常问题。怎么用?它是否适用于所有其他查询???@yashpalbharadwaj
update=none
表示Hibernate在处理映射时不更新数据库架构(看起来没有none
值,您只需注释或删除Hibernate.hbm2ddl.auto
)。这也不例外,因为Hibernate不尝试创建表。@v.ladynev先生,v.ladynev先生,我怎样才能直接向您提出关于Hibernate的进一步问题?
<property name="hbm2ddl.auto">validate</property>
<property name="hbm2ddl.auto">none</property>
<class name="com.telemune.demoPojo.CrbtSubMasterDemo"
table="sdp.crbt_subscriber_master">
<class name="com.telemune.demoPojo.CrbtSubMasterDemo"
schema="sdp" table="crbt_subscriber_master">