[hibernate-dev] Attribute paths and '.' versus '#' as separator

Emmanuel Bernard emmanuel at hibernate.org
Fri Mar 28 14:44:28 EDT 2014

No strong feeling about it.
It will break the OGM dialects that make use of the collection role though. So we need to anticipate.

To me . looks more like the code being used and is a natural notation even beyond Java. But I get that # offers some additional info.
Have you considered?


I think that would have my preference actually.

On 27 Mar 2014, at 23:54, Steve Ebersole <steve at hibernate.org> wrote:

> This is a bit of a potentially insidious one.  Not the best way to start
> off a discussion, I know :)
> The premise is this... Until now Hibernate has represented attribute roles
> using dots.  For an attribute named 'department' on the com.acme.Employee
> entity, the role would be "com.acme.Employee.department".  In terms of
> embeddables, say Employee had an 'address' embedded with its own attributes
> like 'city'.  Then, the full role for 'city' would be
> "com.acme.Employee.address.city".
> As you can start to see the dots here are completely indistinguishable in
> terms of those which define the package/class and those which identify the
> attribute "path".
> So one of the things I started playing with in 5 is to replace the
> separators used in attribute paths to use '#', such that
> "com.acme.Employee.address.city" would instead be
> "com.acme.Employee#address#city".  This makes the role fully parseable
> which is actually useful in quite a few situations.  And it REALLY helps in
> things I have just started working on like storing metadata for composites
> (embeddeds/embeddables) on the SessionFactory, which is the first step in
> support for some cool new features around embeddables like discriminated
> inheritance support.
> However, there is a minor drawback.  Like all attributes, collections have
> a role.  Unfortunately the use of '.' in their role Strings leaks into the
> SPI in terms of locating the CollectionPersisters.
> So the question is whether to continue with this path of replacing the use
> of '.' with '#' for attribute path separators.  The drawback is
> unfortunate.  The benefit is very nice, but I can't really say it is
> required atm.
> Votes?  Thoughts?
> _______________________________________________
> hibernate-dev mailing list
> hibernate-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/hibernate-dev

More information about the hibernate-dev mailing list