Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java org.hibernate.tool.schema.spi.CommandAcceptanceException:无法执行命令_Java_Oracle_Hibernate - Fatal编程技术网

Java org.hibernate.tool.schema.spi.CommandAcceptanceException:无法执行命令

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

我不熟悉hibernate,并尝试在oracle db中映射已创建的表。在以下给定代码中:

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">