Hibernate 在数据库优先开发中找不到 table

Hibernate cannot find table in Database First development

我 运行 我的 Grails 应用程序遇到了另一个问题。我创建并填充了我的 Site_Menu table,如下所示。当我尝试访问控制器功能时,出现无法找到 table 的错误。我将在下面提供我的代码。

CREATE TABLE `Site_Menu` (
  `ID` bigint(20) NOT NULL AUTO_INCREMENT,
  `MenuDisplay` varchar(100) NOT NULL,
  `MenuLink` varchar(256) NOT NULL,
  `MenuTarget` varchar(25) DEFAULT NULL,
  `MenuSortOrder` int(11) NOT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;

INSERT INTO Site_Menu (MenuDisplay, MenuLink, MenuTarget, MenuSortOrder)
VALUES ('Home Page', 'index.html', null, 1);
INSERT INTO Site_Menu (MenuDisplay, MenuLink, MenuTarget, MenuSortOrder)
VALUES ('About the BPO Elks', 'aboutelks.html', null, 2);
INSERT INTO Site_Menu (MenuDisplay, MenuLink, MenuTarget, MenuSortOrder)
VALUES ('Drug Awareness Program', 'dap.html', null, 3);
INSERT INTO Site_Menu (MenuDisplay, MenuLink, MenuTarget, MenuSortOrder)
VALUES ('Elks National Fund', 'enf.html', null, 4);
INSERT INTO Site_Menu (MenuDisplay, MenuLink, MenuTarget, MenuSortOrder)
VALUES ('G.U.M.B.O. Games', 'majorproject.html', null, 5);
INSERT INTO Site_Menu (MenuDisplay, MenuLink, MenuTarget, MenuSortOrder)
VALUES ('Louisiana Elks Fund', 'lef.html', null, 6);
INSERT INTO Site_Menu (MenuDisplay, MenuLink, MenuTarget, MenuSortOrder)
VALUES ('Scholarships', 'scholarships.html', null, 7);
INSERT INTO Site_Menu (MenuDisplay, MenuLink, MenuTarget, MenuSortOrder)
VALUES ('Veterans Services', 'vavs.html', null, 8);
INSERT INTO Site_Menu (MenuDisplay, MenuLink, MenuTarget, MenuSortOrder)
VALUES ('About Us', 'aboutus.html', null, 9);
INSERT INTO Site_Menu (MenuDisplay, MenuLink, MenuTarget, MenuSortOrder)
VALUES ('Our Facilities', 'facilities.html', null, 10);
INSERT INTO Site_Menu (MenuDisplay, MenuLink, MenuTarget, MenuSortOrder)
VALUES ('Lodge Officers & Committee Chairs', 'officers.html', null, 11);
INSERT INTO Site_Menu (MenuDisplay, MenuLink, MenuTarget, MenuSortOrder)
VALUES ('Contact Us', 'contactus.html', null, 12);

COMMIT;

我的域模型如下:

package plaquemineelks

class SiteMenu {

    Long id

    String title
    String link
    String target
    Integer sortOrder

    static constraints = {
        title (blank: false)
        link (blank: false)
        sortOrder (blank: false)
    }

    static mapping = {
        table: "Site_Menu"
        id column: "ID"
        title column: "MenuDisplay"
        link column: "MenuLink"
        target column: "MenuTarget"
        sortOrder column: "MenuSortOrder"
        version false
    }
}

控制器看起来像:

package plaquemineelks

class SiteMenuController {

    def index() { }

    def getMenu() {
        var results = SiteMenu.findAll()

        render(contentType: 'text/json') {[
            'results': results,
            'status': results ? "OK" : "Nothing present"
        ]}
    }
}

我得到的错误是:

URI /PlaquemineElks/SiteMenu/getMenu Class com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException 信息 Table 'PlaquemineElks.site_menu' 不存在

我尝试重命名 table 和 class,我重新创建了所有内容。我的日历 class 和控制器工作正常,为什么这个给我带来问题?

感谢您对这个问题和我最后一个问题的帮助。

基于official docs,而不是:

static mapping = {
    table: "Site_Menu"
    ...
}

使用:

static mapping = {
    table name: "Site_Menu"
    ...
}

static mapping = {
    table "Site_Menu"
    ...
}