Je vais avoir des problèmes en utilisant Hibernate et SQL Server 2008. Lorsque je tente de sauver un objet à la base de données Hibernate lance ceci:Problème d'utilisation Hibernate et SQL Server 2008
could not retrieve snapshot: com.my.MyClass
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Invalid object name `'emanagement.patient_visit'.`
L'utilisateur a select, insert, mise à jour privilèges dans la base de données. J'ai donc réglé ce problème.
C'est le SQL généré:
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=?
Si je lance le SQL ci-dessus dans SQL Server, il dit le nom d'objet non valide emanagement.patient_visit, mais si j'ajoute manuellement que emanagement.dbo.patient_visit « dbo » que il sera exsecuted.
Y a-t-il une autre configuration Hibernate à faire?
Ceci est mon mappage Hibernate. Le mapping ci-dessous fonctionne sous MySQL. Je peux lire et mettre à jour patient_visit dans la base de données. Mais lors du passage à MS Server, il échoue. J'ai essayé d'autres mappages Hibernate qui fonctionnent pour MySQL et MS Server et ils utilisent tous les deux les mêmes déclarations que ci-dessous comme table = "db_table" schema = "my_database". La seule différence est que j'ai créé cette nouvelle base de données d'emanagement sous MS Server, donc je pense que j'ai manqué une configuration de base de données spécifique sur l'outil de gestion MS Server. La seule façon de prouver cela est de déplacer les nouvelles tables d'emanagement vers une base de données existante et de voir si cela fonctionne.
<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>
Merci d'avance.
Pour construire o Dans la réponse de Pascal, il semble que vous ayez spécifié le nom de la base de données où le nom du schéma devrait se trouver dans votre configuration. La plupart des ORMs que j'ai vus n'utilisent pas un schéma de nommage en 3 parties pour l'accès, donc je dois imaginer que c'est une mauvaise configuration. – Anon246
Sa cause étrange, j'ai d'autres mappages d'objets Hibernate ils sont enregistrés correctement dans SQL Server.Mais pour ceux que j'utilise Spring Framework. – Marquinio
@Strommy @Marquinio Il serait intéressant de voir la configuration d'hibernation (et peut-être les mappages pour deux entités représentatives). –