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 settingmysql> SET sql_mode='ANSI_QUOTES';. Check if you can create table namedgroup` 来自 MySQL 控制台。

【讨论】:

有人会认为这是可行的,但是当它创建密钥时,它会尝试将它们命名为 pk_group。真傻! 链接问题表明此映射取决于您要使用的数据库 - 对于 hsqldb(可能还有少数其他数据库),您不需要 ` 对不起,我忘了说我正在使用 MySQL。我已经尝试了上述两种方法,但这些方法都不起作用。 谢谢,我会尝试并尽快回复您

以上是关于Play 2.0 框架 - 保留表名的主要内容,如果未能解决你的问题,请参考以下文章

使用SQL Server和Mysql查询所有数据库名表名和字段名

SQL Server2019数据库查询所有数据库名表名表结构表字段主键方法演示,执行sql提示对象名‘user_tab_columns‘ ‘user_cons_columns‘ 无效问题解决

MYSQL 数据库名表名字段名查询

SQLServer中获取所有数据库名表名字段名以及描述

Play 2.0 与 Play 1.2.5-RC1 + CRUD + 其他模块 [关闭]

SQl查询数据库表名表的列名数据类型主键