用JPA为什么总创建不了mysql数据库的表

用JPA为什么总创建不了mysql数据库的表,第1张

你的逻辑上没有什么问题,但你的sql语句上面用了中文,这是不符合开发规范的。要不你试试用英文命名字段并且创建的表的字段少点,比如只有id和name,如果还是不行的话,那么再看看错误提示的是什么?

很多朋友可能会遇到这样的问题,明明是已经正确配置hbm2dll了,可就是不能正常自动生成数据库。在这个时候,请检查你的entity类的 annotation配置或者hbm.xml配置。在*.hbm.xml配置当中,class节点需要根据不同的数据库类型来配置属性,一般情况下只需要如下配置就行

view plaincopy to clipboardprint?

<class name="类名" table="表名"> <class name="类名" table="表名">

有时可能还会用到sechema和catalog属性。如:

view plaincopy to clipboardprint?

<class name="entity.Educate" table="educate" schema="dbo" catalog="HR">

两种方式

方式1:假设Bean的属性xxx为主键,则在getXxx() 前添加以下注解

@Id

@SequenceGenerator(name="名称A", sequenceName="库中已存在的sequence名称",allocationSize=递增值)

@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="名称A")

方式2:假设Bean的属性xxx为主键,则在getXxx() 前添加以下注解

@Id

@TableGenerator(name="名称A",allocationSize=递增值)//若不指定递增值,则生成的主键值不一定连续

@GeneratedValue(strategy=GenerationType.TABLE, generator="名称A")

总结:方式1:针对Oracle效率略高,但需要手工创建sequence才能使用。

方式2:不依赖数据库,可移植性好,但相比方式1,效率略低。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9420812.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存