Play 2.0 框架 - 保留表名
Posted
技术标签:
【中文标题】Play 2.0 框架 - 保留表名【英文标题】:Play 2.0 Framework - Reserved Table Name 【发布时间】:2012-06-14 07:57:43 【问题描述】:我创建了一个名为 Group 的模型,该模型又应该创建表组。结果,数据库出现错误,说表名是保留字。由于我的模型/表名是保留字,我想知道是否有办法将我的表命名为组。
这是我的 Group 模型的示例(Play Framework 2.0):
@Entity
public class Group extends Model
@Id private long id;
@Required private String groupName;
private static Model.Finder<Long,Group> find =
new Model.Finder<Long,Group> (Long.class, Group.class);
public Group()
public Group(String groupName)
this.groupName = groupName;
/*** Getters & Setters ***/
public long getId()
return id;
public void setId(long id)
this.id = id;
public String getGroupName()
return groupName;
public void setGroupName(String groupName)
this.groupName = groupName;
任何帮助将不胜感激!
【问题讨论】:
顺便说一句:在这种情况下,您不需要创建自定义 getter/setter,Ebean
会为您完成!
【参考方案1】:
简单使用
@Entity
@Table(name="groupOfxxx")
public class Group
不带保留字来描述表格的东西。
【讨论】:
【参考方案2】:也许this 会有所帮助:
@Entity
@Table(name="`group`")
public class Group
如果没有,请尝试:
@Entity
@Table(name="group")
public class Group
如果没有,请尝试:
https://***.com/a/1565765/952046
编辑
mysql docs 说:
表中的大部分单词被标准 SQL 禁止作为列 或表名(例如,GROUP)。
Furthermore:
The identifier quote character is the backtick (“`”):
mysql> SELECT * FROM `select` WHERE `select`.id > 100;
所以它应该工作。也许引号有问题 - 请确保您使用刻度线 (\``), not a single quote (
'). You can also try setting
mysql> SET sql_mode='ANSI_QUOTES';. Check if you can create table named
group` 来自 MySQL 控制台。
【讨论】:
有人会认为这是可行的,但是当它创建密钥时,它会尝试将它们命名为 pk_group
。真傻!
链接问题表明此映射取决于您要使用的数据库 - 对于 hsqldb(可能还有少数其他数据库),您不需要 `
。
对不起,我忘了说我正在使用 MySQL。我已经尝试了上述两种方法,但这些方法都不起作用。
谢谢,我会尝试并尽快回复您以上是关于Play 2.0 框架 - 保留表名的主要内容,如果未能解决你的问题,请参考以下文章
使用SQL Server和Mysql查询所有数据库名表名和字段名
SQL Server2019数据库查询所有数据库名表名表结构表字段主键方法演示,执行sql提示对象名‘user_tab_columns‘ ‘user_cons_columns‘ 无效问题解决