Grails GORM关于缺少方法的问题

Grails GORM关于缺少方法的问题,grails,gorm,Grails,Gorm,更新:我已经修改了最初帖子的内容。我试图简化我原来的问题,我还提供了一些额外的信息 我一直在尝试在遗留的MS SQL Server数据库上使用db反向工程。在尝试使用实际系统之前,我通过了db反向工程教程,以熟悉基于产品的数据库可能需要的工具和模式 在我们的项目上运行db reverse engineer之后,我将实体代码复制到一个Groovy脚本中,该脚本使用GORM standalone引用以下要点来获取完整的代码: 当我尝试运行脚本时,它会产生以下错误,并创建一个全新的表,标记为maste

更新:我已经修改了最初帖子的内容。我试图简化我原来的问题,我还提供了一些额外的信息

我一直在尝试在遗留的MS SQL Server数据库上使用db反向工程。在尝试使用实际系统之前,我通过了db反向工程教程,以熟悉基于产品的数据库可能需要的工具和模式

在我们的项目上运行db reverse engineer之后,我将实体代码复制到一个Groovy脚本中,该脚本使用GORM standalone引用以下要点来获取完整的代码:

当我尝试运行脚本时,它会产生以下错误,并创建一个全新的表,标记为master_licenses。我不知道如何解决这个问题

我的印象是,我可以使用addTo*样式的方法来添加某些域对象。我肯定我忽略了一些显而易见的事情,但我就是不太明白。我已经查看了Grails文档,但没有发现哪里出了问题

Mar 13, 2015 8:19:16 AM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
ERROR: HHH000388: Unsuccessful: alter table master_licenses add constraint     FK_fh56msfgiqs28dhbqp4uyt34f foreign key (master_id) references master
Mar 13, 2015 8:19:16 AM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
ERROR: Column 'master.master_id' is not the same data type as referencing column 'master_licenses.master_id' in foreign key 'FK_fh56msfgiqs28dhbqp4uyt34f'.

Caught: groovy.lang.MissingMethodException: No signature of method:    Master.addToLicenses() is applicable for argument types: (License) values:     [License : (unsaved)]
Possible solutions: getLicenses()
下面是表示的每个表的DDL列表

CREATE TABLE license (
    license_id int IDENTITY(1,1) NOT NULL,
    artist_id int,
    territory_id int,
    project varchar(255) NOT NULL,
    project_type_id int,
    label_id char(3),
    fee money DEFAULT ((0.00)),
    fee_currency_id int,
    licensee_id int,
    contract_date datetime,
    license_status_id char(1),
    license_term_id char(1),
    term_end_date datetime,
    notes nvarchar(max),
    setup_by_id varchar(10),
    setup_date datetime,
    updated_by_id varchar(10),
    updated_date datetime,
    term_notes varchar(4000),
    fee_id int,
    royalty_term varchar(50),
    license_status_notes varchar(4000),
    media_type_id int,
    media_type_notes varchar(255),
    option_ind char(1),
    option_notes varchar(4000),
    territory_notes varchar(255),
    license_product_id int,
    release_date datetime,
    return_date datetime,
    licensee_contact nvarchar(255),
    amount_received money,
    balance_of_advance money,
    royalties_earned money,
    units int,
    PRIMARY KEY (license_id)
);
主表

CREATE TABLE master (
    master_id int IDENTITY(1,1) NOT NULL,
    title nvarchar(255) NOT NULL,
    original_label_id char(3) NOT NULL,
    duration nvarchar(8),
    recording_type_id int NOT NULL,
    asset_type nvarchar(5),
    isrc nvarchar(15),
    sap_issue_num char(12),
    language_id smallint,
    p_notice_year nvarchar(4),
    p_notice_text nvarchar(255),
    recording_date_text nvarchar(100),
    territory_id int,
    location_recording nvarchar(255),
    location_mixing nvarchar(255),
    location_mastering nvarchar(255),
    aftra_ind char(1),
    afm_ind char(1),
    courtesy_of_text nvarchar(255),
    comments nvarchar(max),
    parental_advisory_ind char(1),
    status char(1),
    royalty_master_id numeric(18),
    country_of_origin_id int,
    contain_samples char(1),
    misc_label_copy nvarchar(max),
    asset_type_id int,
    setup_by_id nvarchar(10),
    setup_date datetime NOT NULL,
    updated_by_id nvarchar(10),
    updated_date datetime,
    english_title nvarchar(255),
    version_title nvarchar(80),
    parental_ind_id int,
    isrc_cloned nvarchar(15),
    send_to_umg_ind char(1),
    send_to_umg_date datetime,
    PRIMARY KEY (master_id)
);
许可证\主表-联接表

CREATE TABLE license_master (
    license_id int NOT NULL,
    master_id int,
    setup_by_id char(10),
    setup_date datetime,
    updated_by_id char(10),
    updated_date datetime,
    amount money
);

在使用addToLicenses之前保存许可证可以解决这个问题吗?我以前没有见过@Entity注释的使用-您为什么不将域类放在grails app/domain目录中?这个脚本存在于哪里?如果类位于域目录中,而不是其他位置,那么Grails可能会对这些类施加一些魔力?我很抱歉,但我正在获取域类,并尝试在Grails之外使用GORM单机版运行它们。我已经成功地使用了这种方法,但只是从表格中阅读。这是我第一次尝试在多对多关系中使用这种方法。