[hibernate-issues] [Hibernate-JIRA] Resolved: (HHH-3169) 3.2.6 breaks implicit join for collections
Gail Badner (JIRA)
noreply at atlassian.com
Thu Mar 6 16:42:33 EST 2008
[ http://opensource.atlassian.com/projects/hibernate/browse/HHH-3169?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Gail Badner resolved HHH-3169.
------------------------------
Assignee: Gail Badner
Resolution: Rejected
Implicit joins across collections is not supported. This is documented in the migration guide at http://www.hibernate.org/250.html#A42 as well as the online reference documentation . You need to use an explicit join.
> 3.2.6 breaks implicit join for collections
> ------------------------------------------
>
> Key: HHH-3169
> URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-3169
> Project: Hibernate3
> Issue Type: Bug
> Components: query-hql
> Affects Versions: 3.2.6
> Reporter: Michael Newcomb
> Assignee: Gail Badner
>
> The implicit join query "Cat.by.kitten.name2" below works fine in 3.2.5, but will fail to initialize in 3.2.6:
> import java.util.Set;
> import java.util.HashSet;
> import java.util.List;
> import javax.persistence.Id;
> import javax.persistence.OneToMany;
> import javax.persistence.Entity;
> import javax.persistence.NamedQueries;
> import javax.persistence.NamedQuery;
> import javax.persistence.Query;
> @Entity
> @NamedQueries(value = {
> @NamedQuery(
> name = "Cat.by.kitten.name",
> query = "select c from Cat c inner join c.kittens as kitten with kitten.name=:name"),
> @NamedQuery(
> name = "Cat.by.kitten.name2",
> query = "select c from Cat c where c.kittens.name=:name")
> }
> )
> public class Cat
> {
> @Id
> protected String name;
> @OneToMany
> protected Set<Cat> kittens = new HashSet<Cat>();
> public Cat(String name)
> {
> this.name = name;
> }
> public Set<Cat> getKittens()
> {
> return kittens;
> }
> public static void main(String... args)
> {
> EntityManager entityManager;
> entityManager.getTransaction().begin();
> Cat mom = new Cat("mom1");
> Cat kitten1 = new Cat("mom1.kitten1");
> Cat kitten2 = new Cat("mom1.kitten2");
> entityManager.persist(mom);
> entityManager.persist(kitten1);
> entityManager.persist(kitten2);
> mom.getKittens().add(kitten1);
> mom.getKittens().add(kitten2);
> mom = new Cat("mom2");
> kitten1 = new Cat("mom2.kitten1");
> kitten2 = new Cat("mom2.kitten2");
> entityManager.persist(mom);
> entityManager.persist(kitten1);
> entityManager.persist(kitten2);
> mom.getKittens().add(kitten1);
> mom.getKittens().add(kitten2);
> entityManager.getTransaction().commit();
> Query query = entityManager.createNamedQuery("Cat.by.kitten.name");
> query.setParameter("name", "mom1.kitten1");
> for (Cat cat : (List<Cat>) query.getResultList())
> {
> System.out.println(cat.name);
> }
> query = entityManager.createNamedQuery("Cat.by.kitten.name2");
> query.setParameter("name", "mom1.kitten1");
> for (Cat cat : (List<Cat>) query.getResultList())
> {
> System.out.println(cat.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