Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA persistence.xml_Java_Mysql_Jpa_Eclipselink_Persistence.xml - Fatal编程技术网

Java JPA persistence.xml

Java JPA persistence.xml,java,mysql,jpa,eclipselink,persistence.xml,Java,Mysql,Jpa,Eclipselink,Persistence.xml,有没有办法使persistence.xml上的数据成为动态的? 我想在我的属性文件中添加一个数据库名称属性,然后创建表(如果不存在的话) 这可能吗 我正在使用EclipseLink(JPA2.0)和MySQL。如果您在独立环境中使用JPA,您可以将其他属性传递给Persistence.createEntityManagerFactory() 在应用服务器环境中,您可以使用从JNDI获得的数据源。如果您使用的是spring,则可以使用spring属性占位符配置器机制来执行此操作。只需扩展Eclip

有没有办法使persistence.xml上的数据成为动态的? 我想在我的属性文件中添加一个数据库名称属性,然后创建表(如果不存在的话)

这可能吗


我正在使用EclipseLink(JPA2.0)和MySQL。

如果您在独立环境中使用JPA,您可以将其他属性传递给
Persistence.createEntityManagerFactory()


在应用服务器环境中,您可以使用从JNDI获得的数据源。

如果您使用的是spring,则可以使用spring
属性占位符配置器
机制来执行此操作。只需扩展EclipseLink供应商适配器:

public class ExtendedJpaVendorAdapter extends XJpaVendorAdapter {

    private Map<String, Object> vendorProperties;

    @Override
    public Map<String, Object> getJpaPropertyMap() {
        Map<String, Object> properties = super.getJpaPropertyMap();
        properties.putAll(vendorProperties);
        return properties;
    }

    public Map<String, Object> getVendorProperties() {
        return vendorProperties;
    }

    public void setVendorProperties(Map<String, Object> vendorProperties) {
        this.vendorProperties = vendorProperties;
    }

}
public类ExtendedJpaVendorAdapter扩展XJpaVendorAdapter{
私人地图供应商财产;
@凌驾
公共地图GetJPapPropertyMap(){
Map properties=super.getJpaPropertyMap();
财产。putAll(卖方财产);
归还财产;
}
公共地图getVendorProperties(){
归还卖方财产;
}
公共无效设置供应商属性(映射供应商属性){
this.vendorProperties=vendorProperties;
}
}

然后您可以在SpringXML文件中配置它们。

您可以提供关于持久性的更多信息吗。createEntityManagerFactory(Persistence\u name,map\u name)?@Cyril:关键是映射的属性会覆盖
持久性.xml
的属性。因此,您可以通过该映射传递您的动态属性。映射应该准确地包含persistence.xml属性名称的键?@axtavt:如果我不在映射中包含类,它会影响persistence.xml上定义的类吗?@Cyril:该映射仅用于属性,它不会影响课堂。@Bozho:我想很快。。。我在JavaSE上使用JPA来加快速度……无论如何,我会添加我的spring解决方案:)