Java 忽略休眠占位符
我正在使用Spring和Hibernate开发一个简单的独立Java应用程序来学习它们 我在配置Spring和Hibernate时遇到了一些问题,为了从代码中真正创建一些“有用”的结果 我曾尝试遵循《开始Hibernate第二版》和《Pro Spring 3》一书中所述的示例,但关于Hibernate,我遇到了这个问题(我使用log4j进行日志记录): 在解析配置文件时,似乎忽略了占位符 在这里,我复制了它们的摘录: appcontext.xml:Java 忽略休眠占位符,java,spring,hibernate,Java,Spring,Hibernate,我正在使用Spring和Hibernate开发一个简单的独立Java应用程序来学习它们 我在配置Spring和Hibernate时遇到了一些问题,为了从代码中真正创建一些“有用”的结果 我曾尝试遵循《开始Hibernate第二版》和《Pro Spring 3》一书中所述的示例,但关于Hibernate,我遇到了这个问题(我使用log4j进行日志记录): 在解析配置文件时,似乎忽略了占位符 在这里,我复制了它们的摘录: appcontext.xml: <?xml version="1.0"
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xsi:schemaLocation="
http://www.springframework.org/schema/jdbc
http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd">
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" >
<value>classpath:hibernate.cfg.xml</value>
</property>
<property name="configurationClass">
<value>org.hibernate.cfg.AnnotationConfiguration</value>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${jdbc.dialect}</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<tx:annotation-driven/>
<bean id="personaDao" class="org.bladela.dataaccess.persona.PersonaDaoImpl">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
</beans>
jdbc.driverClassName=org.postgresql.Driver
jdbc.dialect=org.hibernate.dialect.PostgreSQLDialect
jdbc.databaseurl=jdbc:postgresql://localhost:5432/employeemanagementdb
jdbc.username=bladela
jdbc.password=password
如果我用占位符的值替换所有占位符,程序将继续运行,并连接到数据库(如果我只替换一个占位符,错误将“转到”下一个占位符)
然后它返回一个不正确的结果(当它应该返回一个包含一个元素的列表时是一个空列表),但是如果我不能解决它,也许我以后会问它
有什么建议吗?我没有看到在您的上下文中声明任何
属性PlaceHolderConfigure
。属性占位符应该如何解析
一个解决方案是添加
<context:property-placeholder location="classpath:jdbc.properties"/>
与您的上下文相关。谢谢…它起作用了(很抱歉打扰您)现在我必须理解为什么返回的查询列表是空的…为明天工作。。。再一次thanks@bladela不客气。这就是我们来这里的目的。考虑投票和接受答案(和问题)是有益的。我已经尝试过……但我没有必要的声誉来投票给你,我会接受你的答案,只要网站允许我:
jdbc.driverClassName=org.postgresql.Driver
jdbc.dialect=org.hibernate.dialect.PostgreSQLDialect
jdbc.databaseurl=jdbc:postgresql://localhost:5432/employeemanagementdb
jdbc.username=bladela
jdbc.password=password
<context:property-placeholder location="classpath:jdbc.properties"/>