我有hibernate.cfg.xml文件。
<session-factory>
<!-- Database connection settings -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url"></property>
<property name="connection.username"></property>
<property name="connection.password"></property>
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property>
.....................
这是文件中最有趣的部分。 现在我必须设置缺失值:url,username,password。 我试图这样做:
public static void SetSessionFactory() {
try {
AnnotationConfiguration conf = new AnnotationConfiguration().configure();
// <!-- Database connection settings -->
conf.setProperty("connection.url", URL);
conf.setProperty("connection.username", USERNAME);
conf.setProperty("connection.password", PASSWORD);
SESSION_FACTORY = conf.buildSessionFactory();
} catch (Throwable ex) {
// Log exception!
throw new ExceptionInInitializerError(ex);
}
}
但它只是从hibernate.cfg.xm加载我的配置,并且不更改任何属性......
url,username,passoword - 是命令行参数,所以我必须在运行时设置它们。
答案 0 :(得分:23)
尝试在此处致电conf.configure();
属性可能需要像“hibernate.connection.username”这样的hibernate前缀
希望它有所帮助。
答案 1 :(得分:4)
尝试这样,它工作正常
AnnotationConfiguration conf = new AnnotationConfiguration().configure("/dronehibernate.cfg.xml");
conf.setProperty("hibernate.connection.url","jdbc:mysql://localhost/PAT_DRONE_DB1");
SessionFactory sessionFactory = conf.buildSessionFactory();
Session session = sessionFactory.openSession();
List<NetworkType> channelList = session.createQuery("from NetworkType").list();
答案 2 :(得分:0)
使用Environment
class