Search code examples
javamysqljpql

How to collect MySQL base path using JPQL?


I am trying to make a simple Java application on windows-7 that can database backup from mysql. I need mysql base path . I tried using JPQL that is

    EntityManagerFactory emf = Persistence.createEntityManagerFactory("BackupRestoreMysqlDatabasePU");
    EntityManager em = emf.createEntityManager();
    String path = em.createQuery("SELECT @@basedir").getSingleResult().toString();
    System.out.println("My Database Path::" + path);

When I run it, show following error:

 Exception in thread "main" java.lang.IllegalArgumentException: An exception occurred     while creating a query in EntityManager: 
 Exception Description: Syntax error parsing [SELECT @@basedir]. 
 [16, 16] A select statement must have a FROM clause.
 [7, 16] The identification variable '@@basedir' is not following the rules for a Java identifier.
       at org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1585)
       atJava Result: 1

Please help me.


Solution

  • SELECT @@basedir
    

    This not only is SQL, but it's MySQL-specific SQL. Obviously, it's not valid JPQL. JPQL works with entities, always, and is a database-agnostic language.

    Use a native query.