如何为 getEntityManager 方法定义 persistenceprovider?

问题描述 投票:0回答:0

我正在尝试在我的 java/servlet 项目中为我的模型类实现一个模板,其中包含创建表、插入、更新、删除和选择数据的方法。所有这些方法的起点是这个方法

protected EntityManager getEntityManager()
,我在其中定义了sqlite数据库所在的位置以及其他首选项。

但是执行该方法时,会出现错误

javax.persistence.PersistenceException: No Persistence provider for EntityManager named default
。我目前对该方法的实现是:

public abstract class Dao<E extends Model> {
    private Class<E> classe;

    public Dao(Class<E> classe) {
        this.classe = classe;
        if(!exists()) create();
    }

protected EntityManager getEntityManager() {
    String url = getClass().getResource("/data.db").toString();
    Map<String, String> properties = new HashMap<>();
    properties.put("javax.persistence.jdbc.provider", "org.eclipse.persistence.jpa.PersistenceProvider");
    properties.put("javax.persistence.jdbc.driver", "org.sqlite.JDBC");
    properties.put("javax.persistence.jdbc.url", "jdbc:sqlite:"+url);
    EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("default", properties);
    return entityManagerFactory.createEntityManager();
}

    ...
}

任何人都知道如何解决这个问题,而不必包含像 hibernate 或类似的外部库?

java persistence dao entitymanager entitymanagerfactory
© www.soinside.com 2019 - 2024. All rights reserved.