What steps will reproduce the problem?
1. follow guide on creating NH's class using codesmith
2. Try generating code
What is the expected output?
NH related class to be generated
What do you see instead?
Error message:
Rendering output 'NHMaster'...
Generated: C:\Projects\POC\NHibernateLibrary\HbmMaps\LANGUAGE.hbm.xml
Generated:
C:\Projects\POC\NHibernateLibrary\BusinessObjects\LANGUAGE.generated.cs
ERROR: C:\Projects\POC\NHibernateLibrary\NH.csp(0,0) ORA-
00904: "IDX"."TABLE_TYPE": invalid identifier
Stack Trace:
at System.Data.OracleClient.OracleConnection.CheckError(OciErrorHandle
errorHandle, Int32 rc)
at System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle
statementHandle, CommandBehavior behavior, Boolean needRowid,
OciRowidDescriptor& rowidDescriptor, ArrayList& resultParameterOrdinals)
at System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle
statementHandle, CommandBehavior behavior, ArrayList&
resultParameterOrdinals)
at System.Data.OracleClient.OracleCommand.ExecuteReader(CommandBehavior
behavior)
at SchemaExplorer.OracleSchemaProvider.GetTableIndexes(String
connectionString, TableSchema table)
at SchemaExplorer.TableSchema.get_Indexes()
at NHibernateHelper.TableSearchCriteria.GetIndexSearchCriteria
(Dictionary`2 map)
at NHibernateHelper.SearchCriteria.GetAllSearchCriteria(TableSchema
table)
at _CodeSmith.NHibernateMaster_cst.ManagerObjectTemplate.__RenderMethod1
(TextWriter writer, Control control)
at CodeSmith.Engine.DelegateControl.Render(TextWriter writer)
at CodeSmith.Engine.Control.RenderChildren(TextWriter writer)
at CodeSmith.Engine.Control.Render(TextWriter writer)
at CodeSmith.Engine.CodeTemplate.Render(TextWriter writer)
at CodeSmith.Engine.CodeTemplate.RenderToFile(OutputFile outputFile,
Boolean overwrite)
at _CodeSmith.NHibernateMaster_cst.RenderManagerObjects(TableSchema
table)
at _CodeSmith.NHibernateMaster_cst.Render(TextWriter writer)
at CodeSmith.Engine.CodeTemplate.RenderToString()
at CodeSmith.Engine.ProjectCodeGenerator.GenerateCode(CodeSmithProject
csp)
Unable to render output NHMaster, skipping...
Done rendering outputs: 0 succeeded, 1 failed, 0 skipped (1030ms).
What version of the product are you using?
V5.0
Please provide any additional information below.
The legacy tables:
Table name - LANGUAGE
CREATE TABLE LANGUAGE
(
LANG VARCHAR2(10 BYTE) NOT NULL,
LANG_DESCRIPTION VARCHAR2(100 BYTE),
CREATE_DATE DATE DEFAULT
SYSDATE NOT NULL,
CREATE_USER VARCHAR2(30 BYTE) DEFAULT
USER NOT NULL,
MODIFY_DATE DATE,
MODIFY_USER VARCHAR2(30 BYTE)
)
LOGGING
NOCOMPRESS
NOCACHE
NOPARALLEL
MONITORING;
CREATE UNIQUE INDEX LANGUAGE_PK ON LANGUAGE
(LANG)
LOGGING
NOPARALLEL;
CREATE OR REPLACE TRIGGER tr_rq_language
after insert or update or delete
on language
for each row
declare
l_record_id number;
l_trans_id number;
l_dml_type varchar2(10);
begin
l_dml_type := iif.x(inserting, 'INSERT', iif.x
(updating, 'UPDATE', 'DELETE'));
if not cc_rpl_elements.remote_operation and not
cc_rpl_elements.skip_flag then
-- Get Transaction ID
l_trans_id := cc_rpl_elements.get_trans_id;
-- Get Record ID
select queue_record_seq.nextval
into l_record_id
from dual;
cc_rpl_elements.create_rpl_trans_dtl (
'LANGUAGE',
l_dml_type,
l_record_id);
if deleting then
insert into rq_language (
lang,
trans_id,
record_id)
values (
:old.lang,
l_trans_id,
l_record_id);
else
insert into rq_language (
trans_id,
record_id,
lang,
lang_description,
create_date,
create_user,
modify_date,
modify_user)
values (
l_trans_id,
l_record_id,
:new.lang,
:new.lang_description,
:new.create_date,
:new.create_user,
:new.modify_date,
:new.modify_user);
end if;
end if;
end;
/
SHOW ERRORS;
ALTER TRIGGER TR_RQ_LANGUAGE DISABLE;
CREATE OR REPLACE TRIGGER TR_BUR_LANGUAGE
before update
on LANGUAGE
for each row
declare
begin
if not cc_rpl_elements.remote_operation then
-- update the Modify User and Date
begin
:new.modify_user :=user;
:new.modify_date := sysdate;
end;
end if;
end;
/
SHOW ERRORS;
ALTER TABLE LANGUAGE ADD (
CONSTRAINT LANGUAGE_PK
PRIMARY KEY
(LANG));
GRANT DELETE ON LANGUAGE TO DATA_ADMIN;
GRANT INSERT, SELECT, UPDATE ON LANGUAGE TO DATA_ENTRY;
GRANT SELECT ON LANGUAGE TO DATA_REPORT;
GRANT SELECT ON LANGUAGE TO DATA_VIEW;
GRANT DELETE, INSERT, SELECT, UPDATE ON LANGUAGE TO WEBAGENT;
table - LANGUAGE_TL
CREATE TABLE LANGUAGE_TL
(
LANG VARCHAR2(10 BYTE) NOT NULL,
GUI_LANG VARCHAR2(10 BYTE) NOT NULL,
LANG_DESCRIPTION_TL VARCHAR2(100 BYTE) NOT NULL,
ORDER_LIST NUMBER(2),
CREATE_DATE DATE DEFAULT
SYSDATE NOT NULL,
CREATE_USER VARCHAR2(30 BYTE) DEFAULT
USER NOT NULL,
MODIFY_DATE DATE,
MODIFY_USER VARCHAR2(30 BYTE)
)
LOGGING
NOCOMPRESS
NOCACHE
NOPARALLEL
MONITORING;
CREATE UNIQUE INDEX LT1_PK ON LANGUAGE_TL
(LANG, GUI_LANG)
LOGGING
NOPARALLEL;
CREATE OR REPLACE TRIGGER tr_rq_language_tl
after insert or update or delete
on language_tl
for each row
declare
l_record_id number;
l_trans_id number;
l_dml_type varchar2(10);
begin
l_dml_type := iif.x(inserting, 'INSERT', iif.x
(updating, 'UPDATE', 'DELETE'));
if not cc_rpl_elements.remote_operation and not
cc_rpl_elements.skip_flag then
-- Get Transaction ID
l_trans_id := cc_rpl_elements.get_trans_id;
-- Get Record ID
select queue_record_seq.nextval
into l_record_id
from dual;
cc_rpl_elements.create_rpl_trans_dtl (
'LANGUAGE_TL',
l_dml_type,
l_record_id);
if deleting then
insert into rq_language_tl (
lang,
gui_lang,
trans_id,
record_id)
values (
:old.lang,
:old.gui_lang,
l_trans_id,
l_record_id);
else
insert into rq_language_tl (
trans_id,
record_id,
lang,
gui_lang,
lang_description_tl,
order_list,
create_date,
create_user,
modify_date,
modify_user)
values (
l_trans_id,
l_record_id,
:new.lang,
:new.gui_lang,
:new.lang_description_tl,
:new.order_list,
:new.create_date,
:new.create_user,
:new.modify_date,
:new.modify_user);
end if;
end if;
end;
/
SHOW ERRORS;
ALTER TRIGGER TR_RQ_LANGUAGE_TL DISABLE;
CREATE OR REPLACE TRIGGER TR_BUR_LANGUAGETL
before update
on LANGUAGE_TL
for each row
declare
begin
if not cc_rpl_elements.remote_operation then
-- update the Modify User and Date
begin
:new.modify_user :=user;
:new.modify_date := sysdate;
end;
end if;
end;
/
SHOW ERRORS;
ALTER TABLE LANGUAGE_TL ADD (
CONSTRAINT LT1_PK
PRIMARY KEY
(LANG, GUI_LANG));
ALTER TABLE LANGUAGE_TL ADD (
CONSTRAINT LT1_GUI_LANG_FK
FOREIGN KEY (GUI_LANG)
REFERENCES LANGUAGE (LANG));
ALTER TABLE LANGUAGE_TL ADD (
CONSTRAINT LT1_LANG_FK
FOREIGN KEY (LANG)
REFERENCES LANGUAGE (LANG));
GRANT DELETE ON LANGUAGE_TL TO DATA_ADMIN;
GRANT INSERT, SELECT, UPDATE ON LANGUAGE_TL TO DATA_ENTRY;
GRANT SELECT ON LANGUAGE_TL TO DATA_REPORT;
GRANT SELECT ON LANGUAGE_TL TO DATA_VIEW;
GRANT DELETE, INSERT, SELECT, UPDATE ON LANGUAGE_TL TO WEBAGENT;