[hibernate-issues] [Hibernate-JIRA] Commented: (ANN-824) Annotations - MSSQL, DB2, Sybase - Nullable Foreign PK not allowed

Guilherme Elizeire (JIRA) noreply at atlassian.com
Wed Jun 10 09:59:13 EDT 2009


    [ http://opensource.atlassian.com/projects/hibernate/browse/ANN-824?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=33372#action_33372 ] 

Guilherme Elizeire commented on ANN-824:
----------------------------------------

I have the same here:
(...)
@CollectionOfElements(fetch=FetchType.EAGER, targetElement=CaixaConcentradora.class)
      private Map<Integer,CaixaConcentradora> caixas = new HashMap<Integer,CaixaConcentradora>();
(...)

DDL:

create table Rede_CaixaConcentradora(
        Rede_id number(10,0) not null,
        caixas_id number(10,0) not null,
        mapkey number(10,0),
        primary key (Rede_id, mapkey),
        unique (caixas_id)
)

On DDL above the field mapkey must be not null, once it was defined as primary key.

I have tested in Oracle, MySQL and SQLServer, on ORACLE and MySQL this table has been created with the fields defined in primary key as not null, even when this was not being explicit in the DDL, however in the SQLServer this does not happen...





> Annotations - MSSQL, DB2, Sybase - Nullable Foreign PK not allowed
> ------------------------------------------------------------------
>
>                 Key: ANN-824
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/ANN-824
>             Project: Hibernate Annotations
>          Issue Type: Bug
>         Environment: MSSQL, DB2, Sybase
>            Reporter: Gail Badner
>            Assignee: Emmanuel Bernard
>             Fix For: 3.5
>
>
> MSSQL, DB2, and Sybase require primary key columns to be non-nullable. Some unit tests are failing using those DBs  because a primary keys are defined with one or more nullable columns. This is happening with both trunk and v3_3_1_GA_CP.
> I see other JIRA issues that sound related that are marked as fixed, so I'm surprised to see these failing in trunk. 
> HHH-1935 sounds related. It mentions a bug in SchemaUpdate using @MapKey with @CollectionOfElements.
> Workarounds are:
> - add "nullable=false" to @JoinColumn
> - add "optional=false" to @ManyToOne
> - add an @AttributeOverride with @Column(name="mapkey", nullable=false) in case of a @CollectionOfElements using a Map
> - add "nullable=false" in @Column when inside a @CollectionId or inside @MapKey
> I've included the table DDL causing the failure. Also, there were some tests I couldn't get to pass using a workaround. 
> org.hibernate.test.annotations.any.AnyTest
>     create table map_properties ( map_id int not null, property_type varchar(255) null,
>          property_id int not null, map_key varchar(255) null, primary key (map_id, map_key) )
> org.hibernate.test.annotations.cid.CompositeIdTest
>     create table A ( bid numeric(19,0) null, cid numeric(19,0) null, primary key (bid, cid) )
>     create table Child ( nth int not null, parentFirstName varchar(255) null, parentLastName varchar(255) null,
>         primary key (nth, parentFirstName, parentLastName) )
>     create table TvMagazin ( time datetime null, chan_id int null, presenter_name varchar(255) null,
>         primary key (chan_id, presenter_name) )
>     create table TvProgram ( time datetime null, channel_id int null, presenter_name varchar(255) null,
>         primary key (channel_id, presenter_name) )
>     create table TvProgramIdClass ( time datetime null, channel_id int null, presenter_name varchar(255) null,
>         primary key (channel_id, presenter_name) )
> org.hibernate.test.annotations.collectionelement.CollectionElementTest
>     create table Matrix_values ( Matrix_id int not null, element float null, mapkey int null,
>         primary key (Matrix_id, mapkey) )
>     create table ScorePerNickName ( BoyId int not null, fld_score int null, mapkey varchar(255) null,
>         primary key (BoyId, mapkey) )
>     create table TestCourse_variations ( TestCourse_testCourseId numeric(19,0) not null,
>         element varchar(255) null, language_code varchar(255) null,
>         primary key (TestCourse_testCourseId, language_code) )
> org.hibernate.test.annotations.collectionelement.indexedCollection.IndexedCollectionOfElementsTest.testIndexedCollectionOfElements
>     create table contact ( n_key_person int not null, name varchar(255) null, n_key_contact numeric(19,0) null,
>         primary key (n_key_contact) )
> org.hibernate.test.annotations.identifiercollection.IdentifierCollectionTest.testIdBag
> NOTE: I could not find a workaround to fix this test.
>     create table PASSPORT_STAMP ( Passport_passport_id numeric(19,0) not null,
>         stamps_id numeric(19,0) not null, COLLECTION_ID numeric(19,0) null,
>         primary key (COLLECTION_ID) )
>     create table PASSPORT_VISASTAMP ( Passport_passport_id numeric(19,0) not null,
>         visaStamp_id numeric(19,0) not null, COLLECTION_ID numeric(19,0) null,
>         primary key (COLLECTION_ID) )
> org.hibernate.test.annotations.indexcoll.IndexedCollectionTest
>     create table Atmosphere_Gas ( Atmosphere_id int not null, gases_id int not null,
>         gas_name varchar(255) null, primary key (Atmosphere_id, gas_name) )
> org.hibernate.test.annotations.target.TargetTest
> NOTE: I could not find a workaround to fix this test.
>     create table Brand_LuggageImpl ( Brand_id numeric(19,0) not null,
>         luggagesBySize_id numeric(19,0) not null, name varchar(255) null,
>         primary key (Brand_id, name) ) 

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the hibernate-issues mailing list