中文命名之Hibernate 5演示 - 使用注解(annotation)而非xml定义映射
前文中文编程:中文命名之Hibernate 4+MySQL演示最后留下了个Hibernate 5之后出现的问题, 于是在Hibernate社区提交了报告: Seemingly regression since Hibernate 5: unicode support for class name in XML mapping file
开发组(Gail Badner)反应很快, 一同确认了当前稳定版5.4.2.Final和最新的6.0.0.Alpha2都有此问题, 并且基于官方测试用例重现了问题. 初步诊断病因是这个xsd约束(可以继续深究一下源头, 如果是从其他地方拷贝过来的话). 将此问题添加到了5.4版本的待修复问题列表, 并建议用注解(annotation)而不是xml配置. 经测试的确可通过注解支持与前文相同的中文命名.
完整源码在此分支: nobodxbodon/HibernateExampleZh
带注解的Java源码:
@Entity @Table(name="客户") public class 客户类 implements java.io.Serializable { private Long 客户_ID; private String 姓名; private Date 创建日期; public 客户类() { } public 客户类(String 姓名, Date 创建日期) { this.姓名 = 姓名; this.创建日期 = 创建日期; } @Id @GeneratedValue(strategy=GenerationType.IDENTITY) @Column(name = "客户_ID", length=20) public Long get客户Id() { return this.客户_ID; } public void set客户Id(Long 客户Id) { this.客户_ID = 客户Id; } @Column(name = "姓名", nullable = false, length=45) public String get姓名() { return this.姓名; } public void set姓名(String 姓名) { this.姓名 = 姓名; } @Column(name = "创建日期", nullable = false, length=19) public Date get创建日期() { return this.创建日期; } public void set创建日期(Date 创建日期) { this.创建日期 = 创建日期; } @Override public String toString() { return 客户_ID + " " + 姓名 + " " + 创建日期; } }
在Hibernate配置文件中指定类, 而非xml映射文件:
<mapping class="com.codeinchinese.客户.模型.客户类"></mapping>
期间碰到一个问题:
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column '客户类0_.客户Id' in 'field list'
是由于id的默认数据库列名为Id, 而数据库中使用了客户_ID作为列名. 添加如下注解后解决:
@Column(name = "客户_ID", length=20)
参考
org.hibernate.MappingException: Unknown entity: annotations.Users
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
卷积神经网络学习
来源商业新知网,原标题:如何入手卷积神经网络 卷积神经网络可以算是深度神经网络中很流行的网络了。本文从基础入手,介绍了卷积网络的基本原理以及相关的其它技术,并利用卷积网络做了一个简单项目作为示例参考。首先,我们先看看下面这张照片: 图源:Pix2PixHD 这不是一张真实的照片,你可以新建一个窗口来打开它,放大看看,可以看到马赛克。 实际上,这张照片是由 AI 生成的,是不是看起来很真实? 从 Alex Krizhevsky 及其朋友通过 ImageNet 公布这项技术至今,不过才七年。ImageNet 是一个大规模图像识别竞赛,每年都会举办,识别种类达 1000 多种,从阿拉斯加雪橇犬到厕纸应用尽有。之后,他们又创建了 AlexNet,获得了 ImageNet 竞赛冠军,远超第二名。 这项技术就是卷积神经网络。它是深度神经网络的一个分支,处理图像的效果格外好。 图源:ImageNet 上图是几年来赢得 ImageNet 挑战赛的软件产生的误差率。可以发现,2016 年误差率降到了 5%,已经超越人类水平。 深度学习的引入与其说是改变规则,不如说是在打破规则。 卷积神经网络架构 那么问...
- 下一篇
使用 Jenkins 实现 Java 项目的持续集成和持续交付
基于已经配置好的 Jenkins 环境,本文参考中国DevOps社区核心组织者刘征老师在中国DevOps社区济南Meetup活动上分享的 "用Jenkins实施CI/CD工作坊",展示如何使用 Jenkins 实现 Java 项目的 CI/CD (持续集成/持续交付)。 软件版本和环境准备 本次安装中使用的主要软件版本如下: Ubuntu Ubuntu 16.04.6 LTS Ubuntu 18.04.2 LTS openjdk openjdk version "1.8.0_212" openjdk version "11.0.3" Jenkins 2.164.3 Apache Maven 3.6.1 Apache Tomcat Apache Tomcat/8.0.32 (Ubuntu) Apache Tomcat/8.5.39 (Ubuntu) Apache Tomcat/9.0.16 (Ubuntu) Jenkins 和 Tomcat 分别安装在两台云主机中,因为未进行安全防护,为避免受到攻击,示例中的 IP 地址不是真实的 IP 地址: Jenkins 节点: 114.111.1...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- CentOS7设置SWAP分区,小内存服务器的救世主
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS6,CentOS7官方镜像安装Oracle11G
- Hadoop3单机部署,实现最简伪集群
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7安装Docker,走上虚拟化容器引擎之路