(注:このブログはもう更新していません)この日記は私的なものであり所属会社の見解とは無関係です。 GitHub: takahashikzn

[クラウド帳票エンジンDocurain]

EclipseLinkがmariadb-java-client-2.4.xを正しく認識しない件

mariadb-java-client-2.4.xから、ドライバ経由で取得するデータベースの名前が変わったようです。こういうエラーになります。

Not able to detect platform for vendor name [MariaDB1010.3.13-MariaDB]. Defaulting to [org.eclipse.persistence.platform.database.DatabasePlatform]. The database dialect used may not match with the database you are using. Please explicitly provide a platform using property "eclipselink.target-database".

で、少なくとも2019-03-17時点においては、データベース名にmysqlという文字列が含まれていないと正しく検知できません。

なぜそうなのかは、

takahashikzn.root42.jp

を参照。

解決策

そのうち対応されると思いますが、今すぐ解決したいなら以下の通り。お好きな方を。

1. Sessionを書き換える

public class MariaDBSessionConfigurator
    implements org.eclipse.persistence.config.SessionCustomizer {

    @Override
    public void customize(final Session s) throws Exception {
        s.getProperties().put(PersistenceUnitProperties.SCHEMA_DATABASE_PRODUCT_NAME, "mysql");
    }
}

2. JPAプロパティで指定

  • JPAプロパティのjavax.persistence.database-product-namemysqlとぶち込む。