Exemple #1
0
        public Fum(FumCompositeID id)
        {
            _id      = id;
            _friends = new HashSet <Fum>();
            //TODO: H2.0.3 - this is diff from H2.0.3 because I am getting a null exception
            // when executing the Sql.  H203 uses the CalendarType which we don't have so
            // I am using DateTime instead...
            //m_LastUpdated = DateTime.Now;

            FumCompositeID fid = new FumCompositeID();

            fid.Date   = new DateTime(2004, 4, 29, 9, 50, 0, 0);
            fid.Short  = (short)(id.Short + 33);
            fid.String = id.String + "dd";

            Fum f = new Fum();

            f.Id        = fid;
            f.FumString = "FRIEND";
            //TODO: H2.0.3 - this is diff from H2.0.3 because I am getting a null exception
            // when executing the Sql.  H203 uses the CalendarType which we don't have so
            // I am using DateTime instead...
            //f.LastUpdated = DateTime.Now;

            _friends.Add(f);
        }
Exemple #2
0
		public void CriteriaCollection()
		{
			//if( dialect is Dialect.HSQLDialect ) return;

			using (ISession s = OpenSession())
			{
				Fum fum = new Fum(FumKey("fum"));
				fum.FumString = "a value";
				fum.MapComponent.Fummap["self"] = fum;
				fum.MapComponent.Stringmap["string"] = "a staring";
				fum.MapComponent.Stringmap["string2"] = "a notha staring";
				fum.MapComponent.Count = 1;
				s.Save(fum);
				s.Flush();
			}

			using (ISession s = OpenSession())
			{
				Fum b = (Fum) s.CreateCriteria(typeof(Fum))
				              	.Add(Expression.In(
				              	     	"FumString", new string[] {"a value", "no value"}))
				              	.UniqueResult();
				//Assert.IsTrue( NHibernateUtil.IsInitialized( b.MapComponent.Fummap ) );
				Assert.IsTrue(NHibernateUtil.IsInitialized(b.MapComponent.Stringmap));
				Assert.IsTrue(b.MapComponent.Fummap.Count == 1);
				Assert.IsTrue(b.MapComponent.Stringmap.Count == 2);

				int none = s.CreateCriteria(typeof(Fum))
					.Add(Expression.In("FumString", new string[0]))
					.List().Count;
				Assert.AreEqual(0, none);

				s.Delete(b);
				s.Flush();
			}
		}
		public Fum(FumCompositeID id)
		{
			_id = id;
			_friends = new Iesi.Collections.HashedSet();
			//TODO: H2.0.3 - this is diff from H2.0.3 because I am getting a null exception
			// when executing the Sql.  H203 uses the CalendarType which we don't have so
			// I am using DateTime instead...
			//m_LastUpdated = DateTime.Now;
			
			FumCompositeID fid = new FumCompositeID();
			fid.Date= new DateTime(2004, 4, 29, 9, 50, 0, 0);
			fid.Short= (short) ( id.Short + 33 );
			fid.String= id.String + "dd";
			
			Fum f = new Fum();
			f.Id = fid;
			f.FumString="FRIEND";
			//TODO: H2.0.3 - this is diff from H2.0.3 because I am getting a null exception
			// when executing the Sql.  H203 uses the CalendarType which we don't have so
			// I am using DateTime instead...
			//f.LastUpdated = DateTime.Now;

			_friends.Add( f );
		}
Exemple #4
0
		public void Criteria()
		{
			using (ISession s = OpenSession())
			using (ITransaction txn = s.BeginTransaction())
			{
				Fum fum = new Fum(FumKey("fum"));
				fum.Fo = new Fum(FumKey("fo"));
				fum.FumString = "fo fee fi";
				fum.Fo.FumString = "stuff";
				Fum fr = new Fum(FumKey("fr"));
				fr.FumString = "goo";
				Fum fr2 = new Fum(FumKey("fr2"));
				fr2.FumString = "soo";
				fum.Friends = new HashSet<Fum> { fr, fr2 };

				s.Save(fr);
				s.Save(fr2);
				s.Save(fum.Fo);
				s.Save(fum);

				ICriteria baseCriteria = s.CreateCriteria(typeof(Fum))
					.Add(Expression.Like("FumString", "f", MatchMode.Start));
				baseCriteria.CreateCriteria("Fo")
					.Add(Expression.IsNotNull("FumString"));
				baseCriteria.CreateCriteria("Friends")
					.Add(Expression.Like("FumString", "g%"));
				IList list = baseCriteria.List();

				Assert.AreEqual(1, list.Count);
				Assert.AreSame(fum, list[0]);

				baseCriteria = s.CreateCriteria(typeof(Fum))
					.Add(Expression.Like("FumString", "f%"))
					.SetResultTransformer(CriteriaSpecification.AliasToEntityMap);
				baseCriteria.CreateCriteria("Fo", "fo")
					.Add(Expression.IsNotNull("FumString"));
				baseCriteria.CreateCriteria("Friends", "fum")
					.Add(Expression.Like("FumString", "g", MatchMode.Start));
				IDictionary map = (IDictionary) baseCriteria.UniqueResult();

				Assert.AreSame(fum, map["this"]);
				Assert.AreSame(fum.Fo, map["fo"]);
				Assert.IsTrue(fum.Friends.Contains((Fum)map["fum"]));
				Assert.AreEqual(3, map.Count);

				baseCriteria = s.CreateCriteria(typeof(Fum))
					.Add(Expression.Like("FumString", "f%"))
					.SetResultTransformer(CriteriaSpecification.AliasToEntityMap)
					.SetFetchMode("Friends", FetchMode.Eager);
				baseCriteria.CreateCriteria("Fo", "fo")
					.Add(Expression.Eq("FumString", fum.Fo.FumString));
				map = (IDictionary) baseCriteria.List()[0];

				Assert.AreSame(fum, map["this"]);
				Assert.AreSame(fum.Fo, map["fo"]);
				Assert.AreEqual(2, map.Count);

				list = s.CreateCriteria(typeof(Fum))
					.CreateAlias("Friends", "fr")
					.CreateAlias("Fo", "fo")
					.Add(Expression.Like("FumString", "f%"))
					.Add(Expression.IsNotNull("Fo"))
					.Add(Expression.IsNotNull("fo.FumString"))
					.Add(Expression.Like("fr.FumString", "g%"))
					.Add(Expression.EqProperty("fr.id.Short", "id.Short"))
					.List();
				Assert.AreEqual(1, list.Count);
				Assert.AreSame(fum, list[0]);
				txn.Commit();
			}

			using (ISession s = OpenSession())
			using (ITransaction txn = s.BeginTransaction())
			{
				ICriteria baseCriteria = s.CreateCriteria(typeof(Fum))
					.Add(Expression.Like("FumString", "f%"));
				baseCriteria.CreateCriteria("Fo")
					.Add(Expression.IsNotNull("FumString"));
				baseCriteria.CreateCriteria("Friends")
					.Add(Expression.Like("FumString", "g%"));
				Fum fum = (Fum) baseCriteria.List()[0];
				Assert.AreEqual(2, fum.Friends.Count);
				s.Delete(fum);
				s.Delete(fum.Fo);

				foreach (object friend in fum.Friends)
				{
					s.Delete(friend);
				}
				txn.Commit();
			}
		}
Exemple #5
0
		public void DeleteOwner()
		{
			ISession s = OpenSession();
			Qux q = new Qux();
			s.Save(q);
			Fum f1 = new Fum(FumKey("f1"));
			Fum f2 = new Fum(FumKey("f2"));
			IList list = new ArrayList();
			list.Add(f1);
			list.Add(f2);
			f1.FumString = "f1";
			f2.FumString = "f2";
			q.Fums = new HashSet<Fum> {f1, f2};
			q.MoreFums = list;
			s.Save(f1);
			s.Save(f2);
			s.Flush();
			s.Close();

			s = OpenSession();
			ITransaction t = s.BeginTransaction();
			q = (Qux) s.Load(typeof(Qux), q.Key, LockMode.Upgrade);
			s.Lock(q, LockMode.Upgrade);
			s.Delete(q);
			t.Commit();
			s.Close();

			s = OpenSession();
			t = s.BeginTransaction();
			list = s.CreateQuery("from fum in class NHibernate.DomainModel.Fum where not fum.FumString='FRIEND'").List();
			Assert.AreEqual(2, list.Count, "deleted owner");
			s.Lock(list[0], LockMode.Upgrade);
			s.Lock(list[1], LockMode.Upgrade);
			foreach (object obj in list)
			{
				s.Delete(obj);
			}
			t.Commit();
			s.Close();
		}
Exemple #6
0
		public void CompositeIDCollections()
		{
			ISession s = OpenSession();
			Fum fum1 = new Fum(FumKey("fum1"));
			Fum fum2 = new Fum(FumKey("fum2"));
			fum1.FumString = "fee fo fi";
			fum2.FumString = "fee fo fi";
			s.Save(fum1);
			s.Save(fum2);
			Qux q = new Qux();
			s.Save(q);
			IList list = new ArrayList();
			list.Add(fum1);
			q.Fums = new HashSet<Fum> {fum1, fum2};
			q.MoreFums = list;
			fum1.QuxArray = new Qux[] {q};
			s.Flush();
			s.Close();

			s = OpenSession();
			q = (Qux) s.Load(typeof(Qux), q.Key);
			Assert.AreEqual(2, q.Fums.Count, "collection of fums");
			Assert.AreEqual(1, q.MoreFums.Count, "collection of fums");
			Assert.AreSame(q, ((Fum) q.MoreFums[0]).QuxArray[0], "unkeyed composite id collection");
			IEnumerator enumer = q.Fums.GetEnumerator();
			enumer.MoveNext();
			s.Delete((Fum) enumer.Current);
			enumer.MoveNext();
			s.Delete((Fum) enumer.Current);
			s.Delete(q);
			s.Flush();
			s.Close();
		}
Exemple #7
0
		public void CompositeIDQuery()
		{
			ISession s = OpenSession();
			Fum fee = new Fum(FumKey("fee", true));
			fee.FumString = "fee";
			s.Save(fee);
			Fum fi = new Fum(FumKey("fi", true));
			fi.FumString = "fi";
			short fiShort = fi.Id.Short;
			s.Save(fi);
			Fum fo = new Fum(FumKey("fo", true));
			fo.FumString = "fo";
			s.Save(fo);
			Fum fum = new Fum(FumKey("fum", true));
			fum.FumString = "fum";
			s.Save(fum);
			s.Flush();
			s.Close();

			s = OpenSession();
			// Try to find the Fum object "fo" that we inserted searching by the string in the id
			IList vList = s.CreateQuery("from fum in class NHibernate.DomainModel.Fum where fum.Id.String='fo'").List();
			Assert.AreEqual(1, vList.Count, "find by composite key query (find fo object)");
			fum = (Fum) vList[0];
			Assert.AreEqual("fo", fum.Id.String, "find by composite key query (check fo object)");

			// Try to fnd the Fum object "fi" that we inserted by searching the date in the id
			vList =
				s.CreateQuery("from fum in class NHibernate.DomainModel.Fum where fum.Id.Short = ?").SetInt16(0, fiShort).List();
			Assert.AreEqual(1, vList.Count, "find by composite key query (find fi object)");
			fi = (Fum) vList[0];
			Assert.AreEqual("fi", fi.Id.String, "find by composite key query (check fi object)");

			// make sure we can return all of the objects by searching by the date id
			vList =
				s.CreateQuery("from fum in class NHibernate.DomainModel.Fum where fum.Id.Date <= ? and not fum.FumString='FRIEND'").
					SetDateTime(0, DateTime.Now).List();
			Assert.AreEqual(4, vList.Count, "find by composite key query with arguments");
			s.Flush();
			s.Close();

			s = OpenSession();
			Assert.IsTrue(
				s.CreateQuery("select fum.Id.Short, fum.Id.Date, fum.Id.String from fum in class NHibernate.DomainModel.Fum").
					Enumerable().GetEnumerator().MoveNext());
			Assert.IsTrue(
				s.CreateQuery("select fum.Id from fum in class NHibernate.DomainModel.Fum").Enumerable().GetEnumerator().MoveNext());

			IQuery qu =
				s.CreateQuery("select fum.FumString, fum, fum.FumString, fum.Id.Date from fum in class NHibernate.DomainModel.Fum");
			IType[] types = qu.ReturnTypes;
			Assert.AreEqual(4, types.Length);
			for (int k = 0; k < types.Length; k++)
			{
				Assert.IsNotNull(types[k]);
			}
			Assert.IsTrue(types[0] is StringType);
			Assert.IsTrue(types[1] is EntityType);
			Assert.IsTrue(types[2] is StringType);
			Assert.IsTrue(types[3] is DateTimeType);
			IEnumerator enumer = qu.Enumerable().GetEnumerator();
			int j = 0;
			while (enumer.MoveNext())
			{
				j++;
				Assert.IsTrue(((object[]) enumer.Current)[1] is Fum);
			}
			Assert.AreEqual(8, j, "iterate on composite key");

			fum = (Fum) s.Load(typeof(Fum), fum.Id);
			s.CreateFilter(fum.QuxArray, "where this.Foo is null").List();
			s.CreateFilter(fum.QuxArray, "where this.Foo.id = ?").SetString(0, "fooid");
			IQuery f = s.CreateFilter(fum.QuxArray, "where this.Foo.id = :fooId");
			f.SetString("fooId", "abc");
			Assert.IsFalse(f.Enumerable().GetEnumerator().MoveNext());

			enumer =
				s.CreateQuery("from fum in class NHibernate.DomainModel.Fum where not fum.FumString='FRIEND'").Enumerable().
					GetEnumerator();
			int i = 0;
			while (enumer.MoveNext())
			{
				fum = (Fum) enumer.Current;
				s.Delete(fum);
				i++;
			}
			Assert.AreEqual(4, i, "iterate on composite key");
			s.Flush();

			s.CreateQuery(
				"from fu in class Fum, fo in class Fum where fu.Fo.Id.String = fo.Id.String and fo.FumString is not null").
				Enumerable();
			s.CreateQuery("from Fumm f1 inner join f1.Fum f2").List();
			s.Close();
		}
Exemple #8
0
		public void CompositeIDOneToOne()
		{
			ISession s = OpenSession();
			Fum fum = new Fum(FumKey("fum"));
			fum.FumString = "fee fi fo";
			//s.Save(fum); commented out in h2.0.3
			Fumm fumm = new Fumm();
			fumm.Fum = fum;
			s.Save(fumm);
			s.Flush();
			s.Close();

			s = OpenSession();
			fumm = (Fumm) s.Load(typeof(Fumm), FumKey("fum"));
			//s.delete(fumm.Fum); commented out in h2.0.3
			s.Delete(fumm);
			s.Flush();
			s.Close();
		}
Exemple #9
0
		public void CompositeID()
		{
			ISession s = OpenSession();
			ITransaction t = s.BeginTransaction();
			Fum fum = new Fum(FumKey("fum"));
			fum.FumString = "fee fi fo";
			s.Save(fum);

			Assert.AreSame(fum, s.Load(typeof(Fum), FumKey("fum"), LockMode.Upgrade));
			//s.Flush();
			t.Commit();
			s.Close();

			s = OpenSession();
			t = s.BeginTransaction();
			fum = (Fum) s.Load(typeof(Fum), FumKey("fum"), LockMode.Upgrade);
			Assert.IsNotNull(fum, "Load by composite key");

			Fum fum2 = new Fum(FumKey("fi"));
			fum2.FumString = "fee fo fi";
			fum.Fo = fum2;
			s.Save(fum2);

			IList list = s.CreateQuery("from fum in class NHibernate.DomainModel.Fum where not fum.FumString='FRIEND'").List();
			Assert.AreEqual(2, list.Count, "Find a List of Composite Keyed objects");

			IList list2 =
				s.CreateQuery("select fum from fum in class NHibernate.DomainModel.Fum where fum.FumString='fee fi fo'").List();
			Assert.AreEqual(fum, (Fum) list2[0], "Find one Composite Keyed object");

			fum.Fo = null;
			//s.Flush();
			t.Commit();
			s.Close();

			s = OpenSession();
			t = s.BeginTransaction();
			IEnumerator enumerator =
				s.CreateQuery("from fum in class NHibernate.DomainModel.Fum where not fum.FumString='FRIEND'").Enumerable().
					GetEnumerator();
			int i = 0;
			while (enumerator.MoveNext())
			{
				fum = (Fum) enumerator.Current;
				s.Delete(fum);
				i++;
			}

			Assert.AreEqual(2, i, "Iterate on Composite Key");
			//s.Flush();
			t.Commit();
			s.Close();
		}
Exemple #10
0
		public void ListIdentifiers()
		{
			ISession s = OpenSession();
			ITransaction txn = s.BeginTransaction();
			Fum fum = new Fum(FumKey("fum"));
			fum.FumString = "fo fee fi";
			s.Save(fum);

			fum = new Fum(FumKey("fi"));
			fum.FumString = "fee fi fo";
			s.Save(fum);

			// not doing a flush because the Find will do an auto flush unless we tell the session a 
			// different FlushMode
			IList list =
				s.CreateQuery("select fum.Id from fum in class NHibernate.DomainModel.Fum where not fum.FumString = 'FRIEND'").List();

			Assert.AreEqual(2, list.Count, "List Identifiers");

			IEnumerator enumerator =
				s.CreateQuery("select fum.Id from fum in class NHibernate.DomainModel.Fum where not fum.FumString='FRIEND'").
					Enumerable().GetEnumerator();
			int i = 0;
			while (enumerator.MoveNext())
			{
				Assert.IsTrue(enumerator.Current is FumCompositeID, "Iterating Identifiers");
				i++;
			}

			Assert.AreEqual(2, i, "Number of Ids found.");

			// clean up by deleting the 2 Fum objects that were added.
			s.Delete(s.Load(typeof(Fum), list[0]));
			s.Delete(s.Load(typeof(Fum), list[1]));
			txn.Commit();
			s.Close();
		}