Skip to content

Commit

Permalink
HHH-5836 Mapping collection of entities with same name and notnull
Browse files Browse the repository at this point in the history
constraints from two different entities results in duplicate property
mapping of Backref
  • Loading branch information
brmeyer committed Oct 29, 2012
1 parent 8dbe1b6 commit 8f463a7
Show file tree
Hide file tree
Showing 5 changed files with 103 additions and 3 deletions.
Expand Up @@ -795,7 +795,7 @@ protected void bindOneToManySecondPass(
String entityName = oneToMany.getReferencedEntityName();
PersistentClass referenced = mappings.getClass( entityName );
Backref prop = new Backref();
prop.setName( '_' + fkJoinColumns[0].getPropertyName() + "Backref" );
prop.setName( '_' + fkJoinColumns[0].getPropertyName() + '_' + fkJoinColumns[0].getLogicalColumnName() + "Backref" );
prop.setUpdateable( false );
prop.setSelectable( false );
prop.setCollectionRole( collection.getRole() );
Expand Down
Expand Up @@ -38,12 +38,19 @@
*/
public class BackrefTest extends BaseCoreFunctionalTestCase {
@Override
public String[] getMappings() {
protected String[] getMappings() {
return new String[] { "unidir/ParentChild.hbm.xml" };
}

@Override
protected Class<?>[] getAnnotatedClasses() {
// No test needed at this time. This was purely to test a
// validation issue from HHH-5836.
return new Class<?>[] { Parent1.class, Child1.class, Child2.class };
}

@Override
public String getCacheConcurrencyStrategy() {
protected String getCacheConcurrencyStrategy() {
return null;
}

Expand Down
29 changes: 29 additions & 0 deletions hibernate-core/src/test/java/org/hibernate/test/unidir/Child1.java
@@ -0,0 +1,29 @@
package org.hibernate.test.unidir;

import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;

@Entity
@Table(name = "CHILD1")
public class Child1 {
@Id
@Column(name = "ID")
private Long id;

@OneToMany(fetch = FetchType.LAZY)
@JoinColumn(name = "CHILD1_ID", nullable = false)
private List<Parent1> parents = new ArrayList<Parent1>();

public Long getId() {
return this.id;
}

public List<Parent1> getParents() {
return this.parents;
}

public void setParents(List<Parent1> parents) {
this.parents = parents;
}
}
29 changes: 29 additions & 0 deletions hibernate-core/src/test/java/org/hibernate/test/unidir/Child2.java
@@ -0,0 +1,29 @@
package org.hibernate.test.unidir;

import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;

@Entity
@Table(name = "CHILD2")
public class Child2 {
@Id
@Column(name = "ID")
private Long id;

@OneToMany(fetch = FetchType.LAZY)
@JoinColumn(name = "CHILD2_ID", nullable = false)
private List<Parent1> parents = new ArrayList<Parent1>();

public Long getId() {
return this.id;
}

public List<Parent1> getParents() {
return this.parents;
}

public void setParents(List<Parent1> parents) {
this.parents = parents;
}
}
@@ -0,0 +1,35 @@
/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* JBoss, Home of Professional Open Source
* Copyright 2012 Red Hat Inc. and/or its affiliates and other contributors
* as indicated by the @authors tag. All rights reserved.
* See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* This copyrighted material is made available to anyone wishing to use,
* modify, copy, or redistribute it subject to the terms and conditions
* of the GNU Lesser General Public License, v. 2.1.
* This program is distributed in the hope that it will be useful, but WITHOUT A
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General Public License,
* v.2.1 along with this distribution; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301, USA.
*/
package org.hibernate.test.unidir;

import javax.persistence.*;

@Entity
@Table(name = "PARENT1")
public class Parent1 {
@Id
@Column(name = "ID")
Long id;

public Long getId() {
return this.id;
}
}

0 comments on commit 8f463a7

Please sign in to comment.