You need to do a .PropertyRef() if you're joining to the join table on a
non-id. PropertyRef expects the propertyname, not the column name. To
specify your join table, you use .Table("LegacyJoinTable").Build 164 I believe has an issue with quoting column names, where quoting making the columns case sensitive, so a "Pig_group_recid" doesn't work in place of the all caps one (which is probably what is defined in the database). Check out: http://groups.google.com/group/fluent-nhibernate/browse_thread/thread/2fb56aa6fc017c31?hl=en for more details. On Sun, Jan 24, 2010 at 7:26 AM, Gregory Kaidanov <[email protected]>wrote: > Hello , > I'm trying to establish HasManyToMany between 2 tables in my legacy > Oracle db: > > > HasManyToMany<YechidaGroup>(x => x.Col_yig) > .ChildKeyColumn("YIG_GROUP_RECID") > .ParentKeyColumn("PIG_GROUP_RECID") > .Fetch.Select() ; > > It creates an alias for the association join by name > "YechidaGroupToProductsGroup" and in the output of my test , when I > am trying to reach the children's collection I'm getting > ---> System.Data.OracleClient.OracleException: ORA-00942: table or > view does not exist > > > full output stack : > ------ Test started: Assembly: Ness.DoarKamuti.DataLayer.Tests.dll > ------ > > TestCase > > 'M:Ness.DoarKamuti.DataLayer.Tests.ProductsGroupMappingTests.TestProductsGroupMapping' > failed: could not initialize a collection: > [Ness.DoarKamuti.Infrastructure.Entities.ProductsGroup.Col_yig#403] > [SQL: SELECT col_yig0_."PIG_GROUP_RECID" as PIG1_2_, > col_yig0_."YIG_GROUP_RECID" as YIG2_2_, yechidagro1_."YIG_RECID" as > YIG1_29_0_, yechidagro1_."YIG_FROM_TOKEF" as YIG2_29_0_, > yechidagro1_."YIG_UNTIL_TOKEF" as YIG3_29_0_, > yechidagro1_."YIG_YECHIDAID" as YIG4_29_0_, > yechidagro1_."YIG_GROUP_RECID" as YIG5_29_0_, > yechidatdo2_."YDR_YECHIDAT_DOARID" as YDR1_14_1_, > yechidatdo2_."YDR_DELIVERYNUM" as YDR2_14_1_ FROM > YechidaGroupToProductsGroup col_yig0_ left outer join > T_YECHIDOT_DOAR_IN_GROUP yechidagro1_ on > col_yig0_."YIG_GROUP_RECID"=yechidagro1_."YIG_RECID" left outer join > YECHIDAT_DOAR yechidatdo2_ on > yechidagro1_."YIG_YECHIDAID"=yechidatdo2_."YDR_YECHIDAT_DOARID" WHERE > col_yig0_."PIG_GROUP_RECID"=?] > NHibernate.Exceptions.GenericADOException: could not initialize a > collection: > [Ness.DoarKamuti.Infrastructure.Entities.ProductsGroup.Col_yig#403] > [SQL: SELECT col_yig0_."PIG_GROUP_RECID" as PIG1_2_, > col_yig0_."YIG_GROUP_RECID" as YIG2_2_, yechidagro1_."YIG_RECID" as > YIG1_29_0_, yechidagro1_."YIG_FROM_TOKEF" as YIG2_29_0_, > yechidagro1_."YIG_UNTIL_TOKEF" as YIG3_29_0_, > yechidagro1_."YIG_YECHIDAID" as YIG4_29_0_, > yechidagro1_."YIG_GROUP_RECID" as YIG5_29_0_, > yechidatdo2_."YDR_YECHIDAT_DOARID" as YDR1_14_1_, > yechidatdo2_."YDR_DELIVERYNUM" as YDR2_14_1_ FROM > YechidaGroupToProductsGroup col_yig0_ left outer join > T_YECHIDOT_DOAR_IN_GROUP yechidagro1_ on > col_yig0_."YIG_GROUP_RECID"=yechidagro1_."YIG_RECID" left outer join > YECHIDAT_DOAR yechidatdo2_ on > yechidagro1_."YIG_YECHIDAID"=yechidatdo2_."YDR_YECHIDAT_DOARID" WHERE > col_yig0_."PIG_GROUP_RECID"=?] ---> > System.Data.OracleClient.OracleException: ORA-00942: table or view > does not exist > > 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 System.Data.OracleClient.OracleCommand.ExecuteDbDataReader > (CommandBehavior behavior) > at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader > () > at NHibernate.AdoNet.AbstractBatcher.ExecuteReader(IDbCommand cmd) > at NHibernate.Loader.Loader.GetResultSet(IDbCommand st, Boolean > autoDiscoverTypes, Boolean callable, RowSelection selection, > ISessionImplementor session) > at NHibernate.Loader.Loader.DoQuery(ISessionImplementor session, > QueryParameters queryParameters, Boolean returnProxies) > at NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections > (ISessionImplementor session, QueryParameters queryParameters, Boolean > returnProxies) > at NHibernate.Loader.Loader.LoadCollection(ISessionImplementor > session, Object id, IType type) > --- End of inner exception stack trace --- > at NHibernate.Loader.Loader.LoadCollection(ISessionImplementor > session, Object id, IType type) > at NHibernate.Loader.Collection.CollectionLoader.Initialize(Object > id, ISessionImplementor session) > at > NHibernate.Persister.Collection.AbstractCollectionPersister.Initialize > (Object key, ISessionImplementor session) > at > > NHibernate.Event.Default.DefaultInitializeCollectionEventListener.OnInitializeCollection > (InitializeCollectionEvent event) > at NHibernate.Impl.SessionImpl.InitializeCollection > (IPersistentCollection collection, Boolean writing) > at NHibernate.Collection.AbstractPersistentCollection.Initialize > (Boolean writing) > at NHibernate.Collection.AbstractPersistentCollection.Read() > at NHibernate.Collection.AbstractPersistentCollection.ReadSize() > at NHibernate.Collection.PersistentBag.get_Count() > C:\NetProjects\NESS\Ness.DoarKamuti\Ness.DoarKamuti.DataLayer.Tests > \MappingTests\ProductsGroupMappingTests.cs(29,0): at > > Ness.DoarKamuti.DataLayer.Tests.ProductsGroupMappingTests.TestProductsGroupMapping > () > > 2010-01-24 15:12:00,951 [TestRunnerThread] DEBUG NHibernate.SQL - > SELECT productsgr0_."PIG_RECID" as PIG1_30_0_, > productsgr0_."PIG_FROM_TOKEF" as PIG2_30_0_, > productsgr0_."PIG_GROUP_RECID" as PIG3_30_0_, > productsgr0_."PIG_PRODUCTID" as PIG4_30_0_, > productsgr0_."PIG_UNTIL_TOKEF" as PIG5_30_0_ FROM T_PRODUCTS_IN_GROUP > productsgr0_ WHERE productsgr0_."PIG_RECID"=:p0;:p0 = 403 > 2010-01-24 15:12:01,091 [TestRunnerThread] DEBUG NHibernate.SQL - > SELECT col_yig0_."PIG_GROUP_RECID" as PIG1_2_, > col_yig0_."YIG_GROUP_RECID" as YIG2_2_, yechidagro1_."YIG_RECID" as > YIG1_29_0_, yechidagro1_."YIG_FROM_TOKEF" as YIG2_29_0_, > yechidagro1_."YIG_UNTIL_TOKEF" as YIG3_29_0_, > yechidagro1_."YIG_YECHIDAID" as YIG4_29_0_, > yechidagro1_."YIG_GROUP_RECID" as YIG5_29_0_, > yechidatdo2_."YDR_YECHIDAT_DOARID" as YDR1_14_1_, > yechidatdo2_."YDR_DELIVERYNUM" as YDR2_14_1_ FROM > YechidaGroupToProductsGroup col_yig0_ left outer join > T_YECHIDOT_DOAR_IN_GROUP yechidagro1_ on > col_yig0_."YIG_GROUP_RECID"=yechidagro1_."YIG_RECID" left outer join > YECHIDAT_DOAR yechidatdo2_ on > yechidagro1_."YIG_YECHIDAID"=yechidatdo2_."YDR_YECHIDAT_DOARID" WHERE > col_yig0_."PIG_GROUP_RECID"=:p0;:p0 = 403 > > 0 passed, 1 failed, 0 skipped, took 12.53 seconds (Ad hoc). > > > ------------------------------------------------------------------------------------------------- > The question is , how can I map my 2 tables as Many to Many not > through Id comparison and still get the result of join ? > > p.s. > There is an issue with #164 build of Fluent Nhibernate , making as to > map > like this > Map(x => x.Pig_group_recid).Column("PIG_GROUP_RECID"); > instead of > Map(x => x.Pig_group_recid); > Otherwise FNH doesn't recognize the columns , even though they were > mapped properly . > > -- > You received this message because you are subscribed to the Google Groups > "Fluent NHibernate" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]<fluent-nhibernate%[email protected]> > . > For more options, visit this group at > http://groups.google.com/group/fluent-nhibernate?hl=en. > > -- - Hudson http://www.bestguesstheory.com http://twitter.com/HudsonAkridge -- You received this message because you are subscribed to the Google Groups "Fluent NHibernate" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/fluent-nhibernate?hl=en.
