Java 忽略休眠占位符

Java 忽略休眠占位符,java,spring,hibernate,Java,Spring,Hibernate,我正在使用Spring和Hibernate开发一个简单的独立Java应用程序来学习它们 我在配置Spring和Hibernate时遇到了一些问题,为了从代码中真正创建一些“有用”的结果 我曾尝试遵循《开始Hibernate第二版》和《Pro Spring 3》一书中所述的示例,但关于Hibernate,我遇到了这个问题(我使用log4j进行日志记录): 在解析配置文件时,似乎忽略了占位符 在这里,我复制了它们的摘录: appcontext.xml: <?xml version="1.0"

我正在使用Spring和Hibernate开发一个简单的独立Java应用程序来学习它们

我在配置Spring和Hibernate时遇到了一些问题,为了从代码中真正创建一些“有用”的结果

我曾尝试遵循《开始Hibernate第二版》和《Pro Spring 3》一书中所述的示例,但关于Hibernate,我遇到了这个问题(我使用log4j进行日志记录):

在解析配置文件时,似乎忽略了占位符

在这里,我复制了它们的摘录:

appcontext.xml:

<?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"/>