Grails GORM关于缺少方法的问题
更新:我已经修改了最初帖子的内容。我试图简化我原来的问题,我还提供了一些额外的信息 我一直在尝试在遗留的MS SQL Server数据库上使用db反向工程。在尝试使用实际系统之前,我通过了db反向工程教程,以熟悉基于产品的数据库可能需要的工具和模式 在我们的项目上运行db reverse engineer之后,我将实体代码复制到一个Groovy脚本中,该脚本使用GORM standalone引用以下要点来获取完整的代码: 当我尝试运行脚本时,它会产生以下错误,并创建一个全新的表,标记为master_licenses。我不知道如何解决这个问题 我的印象是,我可以使用addTo*样式的方法来添加某些域对象。我肯定我忽略了一些显而易见的事情,但我就是不太明白。我已经查看了Grails文档,但没有发现哪里出了问题Grails GORM关于缺少方法的问题,grails,gorm,Grails,Gorm,更新:我已经修改了最初帖子的内容。我试图简化我原来的问题,我还提供了一些额外的信息 我一直在尝试在遗留的MS SQL Server数据库上使用db反向工程。在尝试使用实际系统之前,我通过了db反向工程教程,以熟悉基于产品的数据库可能需要的工具和模式 在我们的项目上运行db reverse engineer之后,我将实体代码复制到一个Groovy脚本中,该脚本使用GORM standalone引用以下要点来获取完整的代码: 当我尝试运行脚本时,它会产生以下错误,并创建一个全新的表,标记为maste
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单机版运行它们。我已经成功地使用了这种方法,但只是从表格中阅读。这是我第一次尝试在多对多关系中使用这种方法。