gpt4 book ai didi

spring - Hibernate Session 的 get() 函数检索问号而不是希腊字符

转载 作者:行者123 更新时间:2023-11-28 22:07:10 25 4
gpt4 key购买 nike

我有一个使用 spring 和 hibernate 的网络应用程序。我的 hibernate session 工厂在 Spring 配置为:

<bean id="mySessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="myDataSource" />
<property name="configurationClass">
<value>org.hibernate.cfg.AnnotationConfiguration</value>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.SQLServer2005Dialect</prop>
<prop key="hibernate.cache.use_query_cache">false</prop>
<prop key="hibernate.cache.use_second_level_cache">false</prop>
</props>
</property>
<property name="packagesToScan">
<list>
<value>com.example.dslibweb.model</value>
</list>
</property>
</bean>

数据源为:

<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="maxActive" value="${jdbc.maxConnections}" />
</bean>

数据源的属性文件是:

jdbc.username=sa
jdbc.password=***
jdbc.url=jdbc:sqlserver://10.62.0.105:1433;databaseName=example;useUnicode=true;characterEncoding=utf-8
jdbc.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbc.maxConnections=-1

我有一个电话:

DsActions action = (DsActions) this.hibernateCriteriaCommons.findById(id, new DsActions());

findById 定义为:

public T findById(String id, Object model) {
return (T) this.sessionFactory.getCurrentSession().get(model.getClass(), id);
}

所以我正在为特定的 id 调用 hibernate session 的 get 方法,我希望有一个 DsActions 类型的实例。

当我从本地 Tomcat 实例(通过 netbeans 运行)运行它时一切正常。

当我在远程 tomcat 服务器上安装它时,DsActions 的实例似乎有编码问题。检索 DsActions 实例的字段时,我得到问号 (??? ???????? ??????)。文本应该是希腊字符

我很困惑,我不明白为什么在第一种情况下它可以工作,而在第二种情况下却不行。注意:数据是由同一数据库服务器检索的,因此没有区别。唯一的区别是运行应用程序的机器。

提前谢谢大家。

最佳答案

我很确定 Hibernate 正确地检索了该字段,问题在于您输出这些字符的方式。

作为快速检查,您可以在代码中添加诸如 f.contains("?") 之类的条件并输出其结果 - 它应该为 false(如果当然,原始字符串不包含 ?

有关输出中可能出现的问题,请参阅 Unicode - How to get the characters right? .

关于spring - Hibernate Session 的 get() 函数检索问号而不是希腊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5883008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com