我首先使用了Ingres数据库,并且没有出现任何问题。 我在同一端口中配置了 MySQL 数据库的两个架构/目录,一个用于生产者,另一个用于测试。 在 persistence.xml 文件中,我有以下配置:
<persistence-unit name="my_schema">
... classes ...
<properties>
<property name="hibernate.connection.url" value="jdbc:mysql://URL:3306/my_schema"></property>
<property name="hibernate.connection.username" value="my_user"></property>
<property name="hibernate.connection.password" value="my_pass"></property>
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"></property>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"></property>
<property name="hibernate.connection.nombre" value="my_schema" />
</properties>
</persistence-unit>
我的 Java 实体类具有以下定义和注释:
/**
* Constante generated by hbm2java
*/
@Entity
@Table(name = "CONSTANTE", catalog = "my_schema")
public class Constante implements java.io.Serializable {
....
}
当我在 Ingres 工作时,如果我想更改 schema/catalog,我只需要更改 persistence.xml 中的属性 "hibernate.connection.url">:
<property name="hibernate.connection.url" value="jdbc:mysql://URL:3306/my_schema_2">
在 MySQL 中,我必须更改每个类中的“catalog” 注释。有没有更简单或更实用的方法来做到这一点? 事实上,在 MySQL 中,我可以在 url 架构部分中编写任何我想要的内容,并且程序会继续运行。
最佳答案
由于您的实体类是从架构生成的:
/**
* Constante generated by hbm2java
*/
您可以简单地删除表注释中的目录条目:
@Entity
@Table(name = "CONSTANTE")
public class Constante implements java.io.Serializable {
然后,就像您以前经历过的那样,如果您需要更改架构,只需更改 hibernate.connection.url 的值即可。
关于java - JPA persistence.xml 和 MySQL - 未采用正确的 "hibernate.connection.url"目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25014678/