当前位置: 首页 > 面试题库 >

使用Hibernate和SQL Server 2008时出现问题

水焱
2023-03-14
问题内容

我在使用Hibernate和SQL Server 2008时遇到问题。当我尝试将对象保存到数据库时,Hibernate抛出此错误:

could not retrieve snapshot: com.my.MyClass

Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Invalid object name `'emanagement.patient_visit'.`

用户在数据库中具有选择,插入,更新特权。所以我排除了这个问题。

这是生成的SQL:

select
        patientvis_.account_number,
        patientvis_.status as status1_,
        patientvis_.cpt_code as cpt3_1_,
        patientvis_.locked as locked1_,
        patientvis_.state as state1_,
        patientvis_.userid as userid1_ 
    from
        emanagement.patient_visit patientvis_ 
    where
        patientvis_.account_number=?

如果我在SQL Server中运行上述SQL,它说无效的对象名称emanagement.patient_visit,但是如果我手动添加该“ dbo”
emanagement.dbo.patient_visit,它将被删除。

那我还需要做其他的Hibernate配置吗?

这是我的Hibernate映射。下面的映射在MySQL下有效。我可以读取和更新数据库中的Patient_visit。但是,切换到MS
Server时失败。我已经尝试了其他适用于MySQL和MS Server的hibernate映射,它们都使用如下相同的声明,例如table =“ db_table”
schema =“ my_database”。唯一的区别是,我在MS Server下创建了这个新的管理数据库,因此我认为我错过了MS
Server管理工具上的某些特定数据库配置。证明这一点的唯一方法是对我来说,将新表从管理转移到现有数据库,并查看其是否有效。

<class name="com.domain.patient.model.PatientVisit" table="patient_visit"    schema="emanagement">
        <id name="accountNumber" type="java.lang.Long">
            <column name="account_number" precision="22" scale="0" />
            <generator class="assigned"/>
        </id> 
        <property name="status" type="string">
            <column name="status"/>
        </property>
        <property name="cptCode" type="string">
            <column name="cpt_code"/>
        </property> 
        <property name="locked" type="boolean">
            <column name="locked" precision="1" scale="0"/>
        </property>  
        <property name="state" type="string">
            <column name="state"/>
        </property>  
        <property name="userId" type="string">
            <column name="userid"/>
        </property>  
               <set name="documents" lazy="false">
            <key column="account_number"/>
            <one-to-many class="com.domain.document.model.Document"/>
        </set>     
    </class>

提前致谢。


问题答案:

那我还需要做其他的Hibernate配置吗?

在当前设置下,我想您必须指定架构。例如,在映射中:

<class name="Users" table="Users" schema="dbo" catalog="suiteaccess">

但是,您也可以使用hibernate.default_schema属性指定默认架构(请参见3.4。可选配置属性)。



 类似资料:
  • 我有一个使用Struts1.3、Hibernate3和Spring Security开发的web应用程序。由于MySQL在此时间之后关闭了连接,该应用程序在8小时后就停止了运行。然后我从几个帖子中收集信息,使它保持很长时间,现在差不多是20-24小时。有没有人能帮我把这东西弄好。 摘要 Iam在不活动20小时后无法登录。连接被MySQL关闭。 多谢了。 C3p0日志 INFO AbstractPo

  • 问题内容: 我正在尝试使用JavaScript计算两次之间的差异。这只是基本的数学运算,但是在使用and 时,我似乎对此有一些疑问。 如果您想知道为什么要将功能应用于日期,那是因为我使用本地存储在客户端存储一些数据,并在客户端再次访问我的网站时使用它(这种方式比发出更多请求要快)到服务器)。该数据通常会不时更新一次(我是通过另一个网站的API获取数据),因此我设置了一个变量,并将其与其他数据一起存

  • 我试图访问数据库FK使用命名SQL查询与Hibernate,这个想法是查询一个客户表,其中包含名称,和公司ID等。CompanyId是对应表的FK。我写的查询如下: 我目前面临的问题如下: 线程“main”组织中出现异常。冬眠QueryParameterException:位置超出已声明序数参数的数量。请记住,序数参数是基于1的!职位:2个在组织。冬眠发动机查询spi。参数元数据。位于org的ge

  • 但现在,有些服务会变成空的。是否有方法在@Runwith注释中同时使用SpringJunit4ClassRunner.class和PowerMockRunner.class

  • 我有一个数十万对象的列表。当每一个运行时,它都会根据给定的值执行一个可能很长的计算。正因为如此,我希望异步运行每个任务(最好是通过使用某种执行器),并在30秒后检索每次计算的结果,取消那些没有及时完成的结果。(所得值在其他地方使用。) 到目前为止,我就是这样实现它的: ArrayList存储每个要执行的,然后将其发送到ExecutorService以运行所有任务。我遇到的问题是,任务似乎是同步启动

  • 问题内容: 我在应用程序中使用Gson,为此,我使用了一些名称与使用Json相同的类。我的应用程序运行良好,但是在编写proguard时,应用程序崩溃了,我猜有些类正在缩小。我的错误是: java.lang.ClassCastException:com.google.gson.internal.StringMap无法转换为com.sample.package.GsonClass 问题答案: 您需要