首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在游戏2 Ebean中保留大小大于UTF-8编码的实体列表。

问无法在游戏2 Ebean中保留大小大于UTF-8编码的实体列表。
EN

Stack Overflow用户
提问于 2014-07-11 09:45:09
回答 1查看 138关注 0票数 1

我试图在UTF-8编码中坚持一个实体。我使用以下配置

代码语言:javascript
复制
db.default.driver = com.mysql.jdbc.Driver 
db.default.url = "jdbc:mysql://localhost:3306/db?characterEncoding=UTF-8"
db.default.user = ****
db.default.password = ****
db.default.jndiName = DefaultDS

我的持久性xml就像

代码语言:javascript
复制
<persistence-unit name="defaultPersistenceUnit" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <non-jta-data-source>DefaultDS</non-jta-data-source>
    <properties>
        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLInnoDBDialect"/>
        <property name="hibernate.connection.useUnicode" value="true" />
        <property name="hibernate.connection.characterEncoding" value="UTF-8" />
    </properties>
</persistence-unit>

Ebean.save(entityList)

代码语言:javascript
复制
c.j.b.ConnectionHandle - Database access problem. Killing off this connection and all remaining connections in the connection pool. SQL State = HY000
a.a.OneForOneStrategy - java.sql.SQLException: Connection is closed!
javax.persistence.RollbackException: java.sql.SQLException: Connection is closed!

当entityList.size()大于某个数字时,例如15。

但是,当我从db url中删除?characterEncoding=UTF-8部件时,所有工作文件都正常工作,但我无法以正确的编码方式保存中文字符串。

我可以手动保存中文字符

EN

回答 1

Stack Overflow用户

发布于 2014-07-11 10:50:25

如果数据库配置为以UTF-8编码方式存储数据,那么根本不必配置Hibernate。

Java字符串不需要编码。它是一个byte[],它需要编码信息来解释如何读取字节。

每当读取文件/套接字时,您都需要知道编码,因为数据是逐字节的,所以您必须提供解码提示。

确保create表包含编码:

代码语言:javascript
复制
CREATE TABLE MyTable (
    ID             INT UNSIGNED AUTO_INCREMENT,       
    PRIMARY KEY(ID)
) ENGINE=InnoDB DEFAULT CHARSET=UTF8
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24694829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档