Play 2.0框架-保留表名

4
我创建了一个名为Group的模型,它应该创建名为group的表。然而,数据库出现错误,提示表名是保留字。由于我的模型/表名是保留字,我想知道是否有方法可以保持我的表名为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会为您完成! - biesior
2个回答

2

简单使用

@Entity
@Table(name="groupOfxxx")
public class Group {

描述表而不使用保留词的内容。


1

或许this可以帮助您:

@Entity
@Table(name="`group`")
public class Group {

如果不行,尝试:
@Entity
@Table(name="group")
public class Group {

如果不行,尝试:

https://dev59.com/PEnSa4cB1Zd3GeqPQ8rJ#1565765

编辑

MySQL文档表示:

表中的大多数单词都被标准SQL禁止用作列或表名(例如,GROUP)。

此外

The identifier quote character is the backtick (“`”):

mysql> SELECT * FROM `select` WHERE `select`.id > 100;

应该可以工作。也许引号有问题 - 确保使用反引号(\``),而不是单引号(')。您还可以尝试设置mysql> SET sql_mode='ANSI_QUOTES';。检查是否可以从MySQL控制台创建名为group`的表。


人们可能会认为这个可以工作,但是当它创建键时,它尝试将它们命名为pk_group。真的很傻! - sparkyspider
相关问题表明,这种映射取决于您想要使用哪个数据库 - 对于hsqldb(和可能的其他一些数据库),您不需要使用\ - maialithar
抱歉,我忘了提到我正在使用MySQL。我已经尝试了上述两种方法,但都没有起作用。 - Glen
谢谢,我会尝试并尽快回复您。 - Glen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接