Comment puis-je obtenir le nom de la base, je suis connecté via Hibernate?
Je suis en train d'essayer d'obtenir le nom de la base de données que je suis connecté à SQL Server. J'ai essayé de faire:
Query query = session.createQuery("SELECT db_name()");
List<String> dbNames = query.list();
Cependant, j'ai eu l'erreur suivante:
[ERROR PARSER:35] *** ERROR: <AST>:0:0: unexpected end of subtree
Exception in thread "main" java.lang.IllegalStateException: No data type for node: org.hibernate.hql.ast.MethodNode
\-[METHOD_CALL] MethodNode: '('
+-[METHOD_NAME] IdentNode: 'db_name' {originalText=db_name}
\-[EXPR_LIST] SqlNode: 'exprList'
Comment puis-je obtenir le nom de la base de données que je suis connecté?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez soit:
Créer un natif de la requête SQL, avec
session.createSQLQuery(...)
. Vous pouvez extraire une seule ligne de résultats avecuniqueResult()
.Obtenir un JDBC
Connection
de laSession
, et d'en extraire la chaîne de connexion de la base de données des méta-données. Pour SQL Server, je crois que vous aurez besoin pour analyserconnection.getMetaData().getURL()
afin d'en extraire le véritable nom de base de données.Noter que
Session.connection()
est considéré comme obsolète, et que vous êtes supposé utiliserSession.doWork()
.Autant que je sache, vous ne pouvez pas appeler de base de données NAtive des fonctions de cette façon. Essayez d'utiliser une Requête Native au lieu d'une simple requête : http://www.roseindia.net/hibernate/hibernate-native-sql.shtml