- This topic has 8 replies, 2 voices, and was last updated 18 years, 11 months ago by
Haris Peco.
-
AuthorPosts
-
Brian JuergensmeyerMemberHi, All,
Using MyEclipse 4.1.1, I am unable to reverse engineer an Interbase 7.1 database using the Interclient driver provided by Borland. I receive the following error:
An internal error occurred during: “Generating Artifacts”.
no matter which table I try to reverse engineer. Any thoughts?
And, while off-topic (to a certain extent), you folks should know this: We’re currently a Delphi shop, looking to go either DotNet or Java. I paid for my MyEclipse subscription out of my own pocket this year in an attempt to convince the PHB’s that Java, Eclipse, and MyEclipse are the way we need to go for the future. Don’t let me down! 🙂
Thanks very much for your help!
Brian
*** Date: Fri Mar 03 09:10:37 CST 2006 *** System properties: OS=WindowsXP OS version=5.1 Java version=1.5.0_03 *** MyEclipse details: MyEclipse Enterprise Workbench Version: 4.1.1 GA Build id: 20060228-4.1.1-GA *** Eclipse details: Eclipse SDK Version: 3.1.0 Build id: I20050627-1435 Eclipse Platform Version: 3.1.0 Build id: I20050627-1435 Eclipse RCP Version: 3.1.0 Build id: I20050627-1435 Eclipse Java Development Tools Version: 3.1.0 Build id: I20050627-1435 Eclipse Plug-in Development Environment Version: 3.1.0 Build id: I20050627-1435 Eclipse Project SDK Version: 3.1.0 Build id: I20050627-1435 Eclipse startup command=-os win32 -ws win32 -arch x86 -launcher C:\eclipse\eclipse.exe -name Eclipse -showsplash 600 -exitdata 12a8_78 -vm C:\WINDOWS\system32\javaw.exe !ENTRY org.eclipse.core.runtime 4 2 2006-03-03 08:59:28.356 !MESSAGE An internal error occurred during: "Generating Artifacts". !STACK 0 org.hibernate.exception.GenericJDBCException: Error while reading column meta data for CUSTOMERMASTER at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:91) at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:79) at org.hibernate.cfg.reveng.dialect.JDBCMetaDataDialect.getColumns(JDBCMetaDataDialect.java:232) at org.hibernate.cfg.reveng.JDBCReader.processBasicColumns(JDBCReader.java:486) at org.hibernate.cfg.reveng.JDBCReader.readDatabaseSchema(JDBCReader.java:70) at com.genuitec.eclipse.hibernate.wizards.MEJDBCMetaDataConfiguration$1.readDatabaseSchema(MEJDBCMetaDataConfiguration.java:102) at org.hibernate.cfg.JDBCBinder.readFromDatabase(JDBCBinder.java:87) at com.genuitec.eclipse.hibernate.wizards.MEJDBCMetaDataConfiguration.readFromJDBC(MEJDBCMetaDataConfiguration.java:129) at com.genuitec.eclipse.hibernate.wizards.GenerateArtifactsJob$5.execute(GenerateArtifactsJob.java:405) at org.hibernate.console.execution.DefaultExecutionContext.execute(DefaultExecutionContext.java:35) at org.hibernate.console.ConsoleConfiguration.execute(ConsoleConfiguration.java:68) at com.genuitec.eclipse.hibernate.wizards.GenerateArtifactsJob.buildConfiguration(GenerateArtifactsJob.java:400) at com.genuitec.eclipse.hibernate.wizards.GenerateArtifactsJob.run(GenerateArtifactsJob.java:266) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:76) Caused by: interbase.interclient.ParameterIndexOutOfBoundsException: [interclient] Invalid argument: Input parameter index 2 is out of range. See API reference for exception interbase.interclient.ParameterIndexOutOfBoundsException at interbase.interclient.PreparedStatement.getParameterIBType(Unknown Source) at interbase.interclient.PreparedStatement.setString(Unknown Source) at interbase.interclient.DatabaseMetaData.getColumns(Unknown Source) at org.hibernate.cfg.reveng.dialect.JDBCMetaDataDialect.getColumns(JDBCMetaDataDialect.java:210) ... 11 more
Haris PecoMemberbrianjuergensmeyer,
Can you send us ddl script for your table ?
best
Brian JuergensmeyerMemberHi,
This is the DDL for the table.
Thanks,
Brian
CREATE TABLE CUSTOMERMASTER ( COMP_NBR VARCHAR(2), CUST_NBR VARCHAR(8), NAME VARCHAR(30), TAG VARCHAR(8), SORT_NAME VARCHAR(30), COLOR INTEGER, ADDR1 VARCHAR(30), ADDR2 VARCHAR(30), ADDR3 VARCHAR(30), CITY VARCHAR(16), STATE VARCHAR(2), ZIP VARCHAR(10), CUST_TYPE VARCHAR(1), PRIORITY VARCHAR(2), NXT_JOB_NBR INTEGER, NXT_QTE_NBR INTEGER, MAIL_CODE VARCHAR(1), PRINT_INVOICE_REPORT VARCHAR(1), BILLING_REF_NBR VARCHAR(8), NOT_INV_AMT DOUBLE PRECISION, OPEN_AR_BAL DOUBLE PRECISION, ORDER_AMT DOUBLE PRECISION, BEG_BAL DOUBLE PRECISION, SALES_YTD DOUBLE PRECISION, SALES_PTD DOUBLE PRECISION, PAYMENTS_PTD DOUBLE PRECISION, ADJUSTMENTS_PTD DOUBLE PRECISION, DATE_FIRST_ORDER TIMESTAMP, DATE_LAST_ORDER TIMESTAMP, DATE_LAST_PAYMENT TIMESTAMP, DATE_LAST_INVOICE TIMESTAMP, DATE_CREDIT_HOLD TIMESTAMP, CREDIT_LIMIT DOUBLE PRECISION, HIGH_CREDIT DOUBLE PRECISION, HIGH_CREDIT_DATE TIMESTAMP, JOB_BREAK VARCHAR(1), STATEMENT_CODE VARCHAR(1), BILLING_CYCLE VARCHAR(1), AUTO_JOB VARCHAR(1), SALESMAN_NBR VARCHAR(8), TAX_ID_NBR VARCHAR(14), PO_REQ VARCHAR(1), TAX_CODE VARCHAR(2), TERMS_CODE VARCHAR(1), PRICE_COLUMN_CODE VARCHAR(1), CREDIT_CODE VARCHAR(1), METRIC VARCHAR(1), MINORITY VARCHAR(1), STATE_JOB VARCHAR(1), LOT_BLOCK VARCHAR(1), PAY_WAITING VARCHAR(1), MUST_QUOTE VARCHAR(1), MUST_REVIEW VARCHAR(1), RM_DEL_INV_DISP VARCHAR(1), BM_DEL_INV_DISP VARCHAR(1), RM_MIN_LOAD VARCHAR(2), BM_MIN_LOAD VARCHAR(2), DISC_ALLOWED VARCHAR(1), DISC_TYPE VARCHAR(1), DISC_BEFORE DOUBLE PRECISION, DISC_AFTER DOUBLE PRECISION, DISC_EFF_DATE TIMESTAMP, DISC_DAYS INTEGER, DISC_PRINT VARCHAR(1), PAY_HABITS VARCHAR(12), FIN_CHRG_AGING_METHOD VARCHAR(1), REC_STATUS VARCHAR(1), CREDIT_CONTROL VARCHAR(1), TRANS_CODE VARCHAR(4), MIX_RESTRICTION VARCHAR(1), MAIL_STATE VARCHAR(2) NOT NULL ); SET TERM ^ ; /* Triggers only will work for SQL triggers */ CREATE TRIGGER SET_CUSTOMER_MAIL_STATE_INSERT FOR CUSTOMERMASTER ACTIVE BEFORE INSERT POSITION 0 as BEGIN IF (New.Mail_State = '') THEN New.Mail_State = New.State; END ^ CREATE TRIGGER SET_CUSTOMER_MAIL_STATE_UPDATE FOR CUSTOMERMASTER ACTIVE BEFORE UPDATE POSITION 0 as BEGIN IF (New.Mail_State = '') THEN New.Mail_State = New.State; END ^ COMMIT WORK ^ SET TERM ;^
Haris PecoMemberHello,
I have tried your table with firebird 1.5 and it work.I would like try it on Interbase 7.1, but I haven’t database
Is there download link for this databases ?However, my first advice – try find last jdbc drivers and set primary key.
this is hbm.xml from firebird (MyEclipse make composite id for all columns because you haven’t primary key)
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- Mapping file autogenerated by MyEclipse - Hibernate Tools --> <hibernate-mapping> <class name="com.genuitec.firebird.Customermaster" table="CUSTOMERMASTER"> <composite-id name="id" class="com.genuitec.firebird.CustomermasterId"> <key-property name="compNbr" type="string"> <column name="COMP_NBR" length="2" /> </key-property> <key-property name="custNbr" type="string"> <column name="CUST_NBR" length="8" /> </key-property> <key-property name="name" type="string"> <column name="NAME" length="30" /> </key-property> <key-property name="tag" type="string"> <column name="TAG" length="8" /> </key-property> <key-property name="sortName" type="string"> <column name="SORT_NAME" length="30" /> </key-property> <key-property name="color" type="integer"> <column name="COLOR" /> </key-property> <key-property name="addr1" type="string"> <column name="ADDR1" length="30" /> </key-property> <key-property name="addr2" type="string"> <column name="ADDR2" length="30" /> </key-property> <key-property name="addr3" type="string"> <column name="ADDR3" length="30" /> </key-property> <key-property name="city" type="string"> <column name="CITY" length="16" /> </key-property> <key-property name="state" type="string"> <column name="STATE" length="2" /> </key-property> <key-property name="zip" type="string"> <column name="ZIP" length="10" /> </key-property> <key-property name="custType" type="string"> <column name="CUST_TYPE" length="1" /> </key-property> <key-property name="priority" type="string"> <column name="PRIORITY" length="2" /> </key-property> <key-property name="nxtJobNbr" type="integer"> <column name="NXT_JOB_NBR" /> </key-property> <key-property name="nxtQteNbr" type="integer"> <column name="NXT_QTE_NBR" /> </key-property> <key-property name="mailCode" type="string"> <column name="MAIL_CODE" length="1" /> </key-property> <key-property name="printInvoiceReport" type="string"> <column name="PRINT_INVOICE_REPORT" length="1" /> </key-property> <key-property name="billingRefNbr" type="string"> <column name="BILLING_REF_NBR" length="8" /> </key-property> <key-property name="notInvAmt" type="double"> <column name="NOT_INV_AMT" precision="15" scale="0" /> </key-property> <key-property name="openArBal" type="double"> <column name="OPEN_AR_BAL" precision="15" scale="0" /> </key-property> <key-property name="orderAmt" type="double"> <column name="ORDER_AMT" precision="15" scale="0" /> </key-property> <key-property name="begBal" type="double"> <column name="BEG_BAL" precision="15" scale="0" /> </key-property> <key-property name="salesYtd" type="double"> <column name="SALES_YTD" precision="15" scale="0" /> </key-property> <key-property name="salesPtd" type="double"> <column name="SALES_PTD" precision="15" scale="0" /> </key-property> <key-property name="paymentsPtd" type="double"> <column name="PAYMENTS_PTD" precision="15" scale="0" /> </key-property> <key-property name="adjustmentsPtd" type="double"> <column name="ADJUSTMENTS_PTD" precision="15" scale="0" /> </key-property> <key-property name="dateFirstOrder" type="timestamp"> <column name="DATE_FIRST_ORDER" length="19" /> </key-property> <key-property name="dateLastOrder" type="timestamp"> <column name="DATE_LAST_ORDER" length="19" /> </key-property> <key-property name="dateLastPayment" type="timestamp"> <column name="DATE_LAST_PAYMENT" length="19" /> </key-property> <key-property name="dateLastInvoice" type="timestamp"> <column name="DATE_LAST_INVOICE" length="19" /> </key-property> <key-property name="dateCreditHold" type="timestamp"> <column name="DATE_CREDIT_HOLD" length="19" /> </key-property> <key-property name="creditLimit" type="double"> <column name="CREDIT_LIMIT" precision="15" scale="0" /> </key-property> <key-property name="highCredit" type="double"> <column name="HIGH_CREDIT" precision="15" scale="0" /> </key-property> <key-property name="highCreditDate" type="timestamp"> <column name="HIGH_CREDIT_DATE" length="19" /> </key-property> <key-property name="jobBreak" type="string"> <column name="JOB_BREAK" length="1" /> </key-property> <key-property name="statementCode" type="string"> <column name="STATEMENT_CODE" length="1" /> </key-property> <key-property name="billingCycle" type="string"> <column name="BILLING_CYCLE" length="1" /> </key-property> <key-property name="autoJob" type="string"> <column name="AUTO_JOB" length="1" /> </key-property> <key-property name="salesmanNbr" type="string"> <column name="SALESMAN_NBR" length="8" /> </key-property> <key-property name="taxIdNbr" type="string"> <column name="TAX_ID_NBR" length="14" /> </key-property> <key-property name="poReq" type="string"> <column name="PO_REQ" length="1" /> </key-property> <key-property name="taxCode" type="string"> <column name="TAX_CODE" length="2" /> </key-property> <key-property name="termsCode" type="string"> <column name="TERMS_CODE" length="1" /> </key-property> <key-property name="priceColumnCode" type="string"> <column name="PRICE_COLUMN_CODE" length="1" /> </key-property> <key-property name="creditCode" type="string"> <column name="CREDIT_CODE" length="1" /> </key-property> <key-property name="metric" type="string"> <column name="METRIC" length="1" /> </key-property> <key-property name="minority" type="string"> <column name="MINORITY" length="1" /> </key-property> <key-property name="stateJob" type="string"> <column name="STATE_JOB" length="1" /> </key-property> <key-property name="lotBlock" type="string"> <column name="LOT_BLOCK" length="1" /> </key-property> <key-property name="payWaiting" type="string"> <column name="PAY_WAITING" length="1" /> </key-property> <key-property name="mustQuote" type="string"> <column name="MUST_QUOTE" length="1" /> </key-property> <key-property name="mustReview" type="string"> <column name="MUST_REVIEW" length="1" /> </key-property> <key-property name="rmDelInvDisp" type="string"> <column name="RM_DEL_INV_DISP" length="1" /> </key-property> <key-property name="bmDelInvDisp" type="string"> <column name="BM_DEL_INV_DISP" length="1" /> </key-property> <key-property name="rmMinLoad" type="string"> <column name="RM_MIN_LOAD" length="2" /> </key-property> <key-property name="bmMinLoad" type="string"> <column name="BM_MIN_LOAD" length="2" /> </key-property> <key-property name="discAllowed" type="string"> <column name="DISC_ALLOWED" length="1" /> </key-property> <key-property name="discType" type="string"> <column name="DISC_TYPE" length="1" /> </key-property> <key-property name="discBefore" type="double"> <column name="DISC_BEFORE" precision="15" scale="0" /> </key-property> <key-property name="discAfter" type="double"> <column name="DISC_AFTER" precision="15" scale="0" /> </key-property> <key-property name="discEffDate" type="timestamp"> <column name="DISC_EFF_DATE" length="19" /> </key-property> <key-property name="discDays" type="integer"> <column name="DISC_DAYS" /> </key-property> <key-property name="discPrint" type="string"> <column name="DISC_PRINT" length="1" /> </key-property> <key-property name="payHabits" type="string"> <column name="PAY_HABITS" length="12" /> </key-property> <key-property name="finChrgAgingMethod" type="string"> <column name="FIN_CHRG_AGING_METHOD" length="1" /> </key-property> <key-property name="recStatus" type="string"> <column name="REC_STATUS" length="1" /> </key-property> <key-property name="creditControl" type="string"> <column name="CREDIT_CONTROL" length="1" /> </key-property> <key-property name="transCode" type="string"> <column name="TRANS_CODE" length="4" /> </key-property> <key-property name="mixRestriction" type="string"> <column name="MIX_RESTRICTION" length="1" /> </key-property> <key-property name="mailState" type="string"> <column name="MAIL_STATE" length="2" /> </key-property> </composite-id> </class> </hibernate-mapping>
Brian JuergensmeyerMemberHmmm.. Well, as I’m still fairly new to this, it is certainly possible that I’m doing something wrong. If you wish, you can go to http://www.borland.com/downloads/download_interbase.html and get a demo version of IB 7.5.1 (I need to update from IB 7.1 myself).
Although, it is entirely possible that Firebird is more functional than Interbase is in this respect.
Thanks,
Brian
Haris PecoMemberBrian,
I will try your case with Intebase 7.5.1 (linux, but it’s same probably).You can upgrade , if it possible – jdbc drivers make troubles often and it’s better that you try latest version – ‘broken driver’ can be reason for your error
I will send you my results with 7.5.1 soon
Best
Haris PecoMemberBrian,
I reproduce your case with 7.5.1 and I think that it is bug in interclient drivers.We can make workaround for interbase if this is important for you in future releases
Explanation :
Next DatabaseMetaData#getColumns work with mostly JDBC driver (including firebird JayBird driver)
ResultSet rs = dm.getColumns(null,null,”CUSTOMERMASTER”,””);
with interbase interclient driver it throw exception (you got it, too)
Interbase interclient expect this :
ResultSet rs = dm.getColumns(null,null,”CUSTOMERMASTER”,”%”);
JDBC API doesn’t tell if parameter columnPattern (4th parameter) can be null or not, but mostly drivers handle
null like “%”.This is test and you can try (only change parameters YOUR …) :
Best
import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.Driver; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import junit.framework.TestCase; public class InterbaseDriverTest extends TestCase { private String driverName = "interbase.interclient.Driver"; // private String driverName = "org.firebirdsql.jdbc.FBDriver"; private String url = "jdbc:interbase://YOUR_HOST/YOUR_DATABASE"; // private String url = "jdbc:firebirdsql://YOUR_HOST/YOUR_DATABSE"; private String username = "YOUR_USERNAME"; private String password = "YOU_PASSWORD"; private static Driver driver; public InterbaseDriverTest(String name) { super(name); if (driver == null) { try { driver = (Driver) Class.forName(driverName).newInstance(); } catch (Exception e) { e.printStackTrace(); } } } public void testGetColumns() { Connection con; try { con = getConnection(); DatabaseMetaData dm = con.getMetaData(); // doesn't work with Interbase 7.1,7.5.1 // work with other JDBC drivers ResultSet rs = dm.getColumns(null,null,"CUSTOMERMASTER",""); // this work with interclient, too // ResultSet rs = dm.getColumns(null,null,"CUSTOMERMASTER","%"); while (rs.next()) { String columnName = rs.getString("COLUMN_NAME"); System.out.println(columnName); } } catch (Throwable e) { e.printStackTrace(); } } public Connection getConnection() throws SQLException { return DriverManager.getConnection(url, username, password); } }
Brian JuergensmeyerMemberHi!
@support-snpe wrote:
Brian,
I reproduce your case with 7.5.1 and I think that it is bug in interclient drivers.We can make workaround for interbase if this is important for you in future releases
I’d be very grateful if you folks would put a work around in for this in the next build. I realize it isn’t your problem, but I expect that you’ll be a bit more responsive than Borland will if I hit them up about it.
I also realize it has been a while sine I wrote in about this, so, if I don’t hear back from you by Monday, I’ll try to find some way to bump this so it doesn’t fall off your radar screen.
Thanks again,
Brian Juergensmeyer
Haris PecoMemberBrian,
I file your request and it will be reoslved in future releases
Thanks
-
AuthorPosts