Will do, if I figure it out. But my comment wasn't complaining. I am 
honestly mystified. Am I the only one using trees in Hibernate? Is there 
a tree library in Scala that I'm missing? What the heck does everyone 
else do? It just blows my mind.

Chas.

Viktor Klang wrote:
> 
> 
> On Mon, Dec 1, 2008 at 5:42 AM, Charles F. Munat <[EMAIL PROTECTED] 
> <mailto:[EMAIL PROTECTED]>> wrote:
> 
> 
>     Doing nested sets in your Lift snippet is pretty easy with JPA. I'm
>     doing it on one of my Lift sites. One thing to remember, however, is to
>     use a transaction. You don't want to do half the update to the tree and
>     then have another use start an update before you've finished yours (or
>     have half of it fail). Once it gets messed up it's a disaster.
> 
>     Nested tables are good when you have lots of lookups, particularly
>     pulling ancestors or descendants, but not too many updates. Inserts are
>     not too bad, but if you have to move whole subtrees, that's a pain.
> 
>     I'm using one for, among other things, a forum, so messages once posted
>     never get moved. Nested sets work great for that.
> 
>     But, honestly, it is astonishing to me that Java, Scala, and especially
>     JPA/Hibernate apparently have no built in features for creating,
>     manipulating, and persisting trees (and networks are even less
>     supported). These problems were largely solved long ago. Why aren't they
>     built in?
> 
> 
> Charles, I hate to say this, but Hibernate is Open Source, so you can 
> add the support for it. :)
>  
> 
> 
> 
>     Rails has a cool set of plugins -- acts_as_list, acts_as_tree, and
>     acts_as_nested_set -- that make it drop-dead simple to implement trees.
>     I was thinking that it would be cool if Lift had something similar but
>     maybe as a trait? So my object extends ActsAsNestedSet?
> 
>     I tried to do this in Hibernate, but it would require the object to
>     query for other similar objects. For example, if I had a Node object
>     that I was persisting, I'd like to do
> 
>     class Node extends ActsAsNestedSet
> 
>     And then define methods such as moveToChildOf(node), moveToFirst,
>     moveBack, moveForth, moveToLast, etc. But it appears that you need an
>     EntityManager to run a query, and there doesn't seem to be a way to go
>     backwards from the Node to the EntityManager (probably because, if I
>     understand it correctly, there will only be one copy of a given Node in
>     memory but there may be multiple EntityManagers?).
> 
>     So I put the code in the snippet.
> 
>     If you come up with any clever solutions, I'd love to hear them.
> 
>     Chas.
> 
>     Tim Perrett wrote:
>      > Hey Derek,
>      >
>      > I've been playing around with this nested set stuff today - it's
>     pretty
>      > cool. I nearly have an app working that uses the db for page
>     content and
>      > maps the urls out however you want, it's pretty neat.
>      >
>      > I have a slight HQL problem with subquery's but I'll post that
>     2mro :-)
>      >
>      > Thanks for all your help
>      >
>      > Tim
>      >
>      > Sent from my iPhone
>      >
>      > On 30 Nov 2008, at 23:37, "Derek Chen-Becker"
>     <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
>      > <mailto:[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>> wrote:
>      >
>      >> IIRC, JPA has support for batch updates, but I'm not 100%
>     positive on
>      >> that. I'll have more time tomorrow to look at this if you'd
>     still like
>      >> to discuss it.
>      >>
>      >> Derek
>      >>
>      >> On Sun, Nov 30, 2008 at 12:32 PM, Tim Perrett <
>      >> <mailto:[EMAIL PROTECTED]
>     <mailto:[EMAIL PROTECTED]>>[EMAIL PROTECTED]
>     <mailto:[EMAIL PROTECTED]>
>      >> <mailto:[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>> wrote:
>      >>
>      >>
>      >>     Derek,
>      >>
>      >>     Those links are *extremely* good - thank you! I've not
>     really done
>      >>     anything with tree structures before and they are really, really
>      >>     usefull.
>      >>
>      >>     One thing however, it appears the optimal way of  doing the
>     insert
>      >>     queries would be with stored procedures, however that im not
>     down
>      >>     with, and ideally, i want to keep database vendor
>     independent (part of
>      >>     the point of using JPA) so ideally i want to suck that up
>     into the
>      >>     application logic. For instance:
>      >>
>      >>     --START
>      >>     SELECT @myRight := rgt FROM nested_category WHERE name =
>      >>     'TELEVISIONS';
>      >>
>      >>     UPDATE nested_category SET rgt = rgt + 2 WHERE rgt > @myRight;
>      >>     UPDATE nested_category SET lft = lft + 2 WHERE lft > @myRight;
>      >>
>      >>     INSERT INTO nested_category(name, lft, rgt) VALUES('GAME
>     CONSOLES',
>      >>     @myRight + 1, @myRight + 2);
>      >>     --END
>      >>
>      >>     This makes use of variables, and i could of course do this via 3
>      >>     separate queries in JPA, but i wondered if there was a
>     neater way to
>      >>     construct this type of thing with JPA?
>      >>
>      >>     Any advice you guys have is most welcome
>      >>
>      >>     Cheers
>      >>
>      >>     Tim
>      >>
>      >>
>      >>     On Nov 30, 2:27 pm, "Derek Chen-Becker"
>     <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
>      >>     <mailto:[EMAIL PROTECTED]
>     <mailto:[EMAIL PROTECTED]>>> wrote:
>      >>     > If you're heavily skewed towards reads and not writes (as it
>      >>     seems in the
>      >>     > case of a CMS), you might want to look at Celko nested sets:
>      >>     >
>      >>     >
>      >>    
>     
> <http://www.intelligententerprise.com/001020/celko.jhtml>http://www.intelligententerprise.com/001020/celko.jhtml
>      >>     >
>      >>    
>     
> <http://dev.mysql.com/tech-resources/articles/hierarchical-data.html>http://dev.mysql.com/tech-resources/articles/hierarchical-data.html
>      >>     >
>      >>     > A little more work on updates than an adjacency model, but
>     a lot
>      >>     more
>      >>     > efficient.
>      >>     >
>      >>     > Derek
>      >>
>      >>
>      >>
>      >>
>      >>
>      >
>      > >
> 
> 
> 
> 
> 
> -- 
> Viktor Klang
> Senior Systems Analyst
> 
> > 

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to