Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [eclipselink-users] Legacy database ddl generation with duplicate column definition.

Hello,

EclipseLink is case sensitive when it comes to processing column names, but most databases are not. If you have "FcorpID" in the join column as the foreign key but "FCorpID" in the ExcercisePK mapping EclipseLink will treat them as two separate fields instead of the same field. This could be why you are getting the exception on DDL generation, as EclipseLink will try to create both fields separately. Solution is to make the field names the same in all definitions.

Best Regards,
Chris

zaya wrote:
It seems to be a bug of eclipselink. I'm working on a legacy database. The
mapping of table is like:

[code]
... table definition

@EmbeddedId
    protected ExercisePK key;

... many other columns

@ManyToOne
    @JoinColumns({
@JoinColumn(name="FMemberID",referencedColumnName="FMemberID",insertable=false,updatable=false),
  @JoinColumn(name="FcorpID", referencedColumnName="FCorpID",
insertable=false, updatable=false)
    })
    private AppMember appMember;


[/code]

The problem here is that the composite primary key is composed of the table
auto id and also the "FcorpID" column. Because FcorpID is a global
identifier which exits in every table to distingush similar data from other
corporations.

The mapping itself works fine. But when I want to test database using in
memory db and generate ddl, eclipselink throw exception that it said the
column definition "FcorpID" is duplicated and table is not created.

I'm wondering if this is a bug or there's some configuration I can use to
let eclipselink know that only one column here is needed like when
persisting I turn off insertable and updatable to disable the second
column's modification. Or is this a missing feature?


Back to the top