EclipseLink -> JPA Tools -> Generate Entities from Tables (Postgres) [message #828198] |
Sat, 24 March 2012 11:18 |
shalin lazar Messages: 18 Registered: February 2012 |
Junior Member |
|
|
Hi all,
I'm not sure where to ask this, so if I'm in the wrong place, apologies in advance.
I have built a large database in PostgreSQL 8.4, with quite a few Stored Functions, Triggers, etc. in order to increase the performance of my application and for functional requirements such as avoiding gaps in some sequences.
I've build Java EE applications before on NetBeans, but have chosen Eclipse for obvious reasons. I've been following the following tutorial:
programming[dot]manessinger[dot]com[slash]tutorials[slash]an-eclipse-glassfish-java-ee-6-tutorial;
... in order to get around some specifics, but I've run into a problem at the first hurdle which I cannot seem to figure out.
When generating entities from my database, the resulting Entity Beans are full of errors: some tables are not even generated even though I selected all tables in the wizard.
I think the main reason is that I do not have a fixed structure of tables in my database. For example, some tables have up to 4 columns as a collective primary key, while others have just a column and a row to store a count variable. The database indexing is fine as it is and can run without any problems on its own. I'm mostly planning on building the front end (Swing) and finishing off the smaller (quicker) business logic through Session and Message-Driven beans.
So that is a basic intro of the state I'm in. There are quite a few errors ... I'll list the ones I've noted as of now:
1) Some tables are not generated as entity beans.
2) Some associations generate naming errors: So far, I've only noted SOME @ManyToOne associations. I'll go into more detail here.
In the Table Associations frame of the Entity Generation wizard, I've noted a ManyToOne relation. The Table join section seems fine, as do the properties of both tables involved.
Eg: accountTransactCenter.currencyId = currency.id
However, AccountTransactCenter.java has the following error:
//bi-directional many-to-one association to Currency
@ManyToOne --> error
@JoinColumns({})
private Currency currency;
Mouse-over the error: Join column "currency_id" cannot be resoved on table "accountTransactCenter"
Now, I made a few errors in my DB development. Mainly, name errors. I followed java method style, starting all DB identifiers with lowercase with an proceeding word beginning with an upper case. Postgres supports identifiers with uppercase characters by double-quoting them. As I was using a GUI client in pgadminIII, I only noticed this when I had done quite a bit of work.
Secondly, and I do not think this is an error, I name my foreign keys as such:
localTable_foreignTable_foreignTableColumnName.
This could be the only reason I can think of as to why currency_id was raised as an error, as I had not entered any such name into a column or table name. Are my suspicions correct? So, for the example given, the foreign key in accountTransactCenter would be:
fki_accountTransactCenter_currency_id (fki is generated by Postgres).
Other than this, I haven't found anything else. I know I should have tried an easier example before building my whole database, but is there any way around these issues?
Thanks and best regards.
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.02428 seconds