diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/InValueDiscriminatorStrategy.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/InValueDiscriminatorStrategy.java
index 3dbf4a88a..94f33c9fe 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/InValueDiscriminatorStrategy.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/InValueDiscriminatorStrategy.java
@@ -141,10 +141,10 @@ public abstract class InValueDiscriminatorStrategy
Column col = disc.getColumns()[0];
SQLBuffer sql = new SQLBuffer(sel.getConfiguration().
getDBDictionaryInstance());
+ String alias = sel.getColumnAlias(col, joins);
boolean outer = joins != null && joins.isOuter();
if (outer)
sql.append("(");
- String alias = sel.getColumnAlias(col, joins);
sql.append(alias);
// if not selecting subclasses, limit to just the given class
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/TestJoinTableStrategy.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/TestJoinTableStrategy.java
new file mode 100644
index 000000000..10fd508e4
--- /dev/null
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/TestJoinTableStrategy.java
@@ -0,0 +1,87 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openjpa.persistence.inheritance;
+
+import javax.persistence.EntityManager;
+
+import org.apache.openjpa.persistence.inheritance.entity.Department;
+import org.apache.openjpa.persistence.inheritance.entity.Employee;
+import org.apache.openjpa.persistence.inheritance.entity.FTEmployee;
+import org.apache.openjpa.persistence.inheritance.entity.PTEmployee;
+import org.apache.openjpa.persistence.inheritance.entity.Manager;
+import org.apache.openjpa.persistence.test.SingleEMFTestCase;
+
+/**
+ * Originally reported in the context of entities of a inheritance hierarchy with
+ * JOIN_TABLE strategy.
+ *
+ * OPENJPA-1536
+ *
+ * @author Jody Grassel
+ * @author Fay Wang
+ *
+ */
+public class TestJoinTableStrategy extends SingleEMFTestCase {
+
+ public void setUp() {
+ super.setUp(CLEAR_TABLES, Department.class, Employee.class,
+ PTEmployee.class, FTEmployee.class, Manager.class);
+
+ EntityManager em = emf.createEntityManager();
+ em.getTransaction().begin();
+ Manager m = new Manager();
+ m.setId(1);
+ m.setFirstName("mf1");
+ m.setLastName("ml1");
+ m.setSalary(1000000);
+ m.setVacationDays(20);
+
+ Department d = new Department();
+ d.setId(1);
+ d.setDepartmentName("d1");
+ d.setDepartmentManager(m);
+ m.setDepartment(d);
+
+ Employee e1 = new Employee();
+ e1.setId(2);
+ e1.setFirstName("ef1");
+ e1.setLastName("el1");
+ e1.setDepartment(d);
+ e1.setManager(m);
+ e1.setVacationDays(20);
+
+ em.persist(m);
+ em.persist(d);
+ em.persist(e1);
+ em.getTransaction().commit();
+ em.close();
+ }
+
+ @Override
+ public void tearDown() {
+ // problem deleting table in MySQL
+ }
+
+ public void testFindEntity() {
+ EntityManager em1 = emf.createEntityManager();
+ Manager m = em1.find(Manager.class, 1);
+ assertNotNull(m);
+ em1.close();
+ }
+}
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/Department.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/Department.java
new file mode 100644
index 000000000..4bf596c4c
--- /dev/null
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/Department.java
@@ -0,0 +1,91 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openjpa.persistence.inheritance.entity;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+
+/**
+ * Test case and domain classes were originally part of the reported issue
+ * OPENJPA-1536
+ *
+ * @author Jody Grassel
+ * @author Fay Wang
+ *
+ */
+@Entity
+@Table(name="CDepartment")
+public class Department {
+ @Id
+ private int id;
+
+ private String departmentName;
+
+ @ManyToOne
+ private Manager departmentManager;
+
+ @OneToMany(mappedBy="department")
+ private List employeeList;
+
+ public Department() {
+ this.employeeList = new ArrayList();
+ }
+
+ public Department(int id, String departmentName) {
+ this.employeeList = new ArrayList();
+ this.id = id;
+ this.departmentName = departmentName;
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getDepartmentName() {
+ return departmentName;
+ }
+
+ public void setDepartmentName(String departmentName) {
+ this.departmentName = departmentName;
+ }
+
+ public Manager getDepartmentManager() {
+ return departmentManager;
+ }
+
+ public void setDepartmentManager(Manager departmentManager) {
+ this.departmentManager = departmentManager;
+ }
+
+ public List getEmployeeList() {
+ return employeeList;
+ }
+
+
+}
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/Employee.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/Employee.java
new file mode 100644
index 000000000..5dc26a726
--- /dev/null
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/Employee.java
@@ -0,0 +1,123 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openjpa.persistence.inheritance.entity;
+
+import javax.persistence.DiscriminatorColumn;
+import javax.persistence.DiscriminatorType;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+import javax.persistence.Version;
+
+/**
+ * Test case and domain classes were originally part of the reported issue
+ * OPENJPA-1536
+ *
+ * @author Jody Grassel
+ * @author Fay Wang
+ *
+ */
+@Entity
+@Table(name="CEmployee")
+@Inheritance(strategy=InheritanceType.JOINED)
+@DiscriminatorColumn(name="EMP_TYPEL", discriminatorType=DiscriminatorType.INTEGER)
+public class Employee {
+
+ @Id
+ private int id;
+
+ private String lastName;
+ private String firstName;
+
+ private int vacationDays;
+
+ @ManyToOne
+ private Manager manager;
+
+ @ManyToOne
+ private Department department;
+
+ @Version
+ private long version;
+
+ private transient String str = null;
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ str = null;
+ }
+
+ public String getLastName() {
+ return lastName;
+ }
+
+ public void setLastName(String lastName) {
+ this.lastName = lastName;
+ str = null;
+ }
+
+ public String getFirstName() {
+ return firstName;
+ }
+
+ public void setFirstName(String firstName) {
+ this.firstName = firstName;
+ str = null;
+ }
+
+ public int getVacationDays() {
+ return vacationDays;
+ }
+
+ public void setVacationDays(int vacationDays) {
+ this.vacationDays = vacationDays;
+ str = null;
+ }
+
+ public Manager getManager() {
+ return manager;
+ }
+
+ public void setManager(Manager manager) {
+ this.manager = manager;
+ str = null;
+ }
+
+ public Department getDepartment() {
+ return department;
+ }
+
+ public void setDepartment(Department department) {
+ this.department = department;
+ str = null;
+ }
+
+ public long getVersion() {
+ return version;
+ }
+
+
+}
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/FTEmployee.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/FTEmployee.java
new file mode 100644
index 000000000..48202ea92
--- /dev/null
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/FTEmployee.java
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openjpa.persistence.inheritance.entity;
+
+import javax.persistence.DiscriminatorValue;
+import javax.persistence.Entity;
+
+/**
+ * Test case and domain classes were originally part of the reported issue
+ * OPENJPA-1536
+ *
+ * @author Jody Grassel
+ * @author Fay Wang
+ *
+ */
+@Entity
+@DiscriminatorValue("2")
+public class FTEmployee extends Employee {
+ private double salary;
+
+ public double getSalary() {
+ return salary;
+ }
+
+ public void setSalary(double salary) {
+ this.salary = salary;
+ }
+
+
+}
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/Manager.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/Manager.java
new file mode 100644
index 000000000..4802685d1
--- /dev/null
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/Manager.java
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openjpa.persistence.inheritance.entity;
+
+import java.util.List;
+
+import javax.persistence.DiscriminatorValue;
+import javax.persistence.Entity;
+import javax.persistence.OneToMany;
+
+/**
+ * Test case and domain classes were originally part of the reported issue
+ * OPENJPA-1536
+ *
+ * @author Jody Grassel
+ * @author Fay Wang
+ *
+ */
+@Entity
+@DiscriminatorValue("3")
+public class Manager extends FTEmployee {
+ @OneToMany(mappedBy="manager")
+ private List managesList;
+
+ public List getManagesList() {
+ return managesList;
+ }
+
+ public String toString() {
+ String str = super.toString();
+ return "Manager " + str;
+ }
+
+}
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/PTEmployee.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/PTEmployee.java
new file mode 100644
index 000000000..f472e0851
--- /dev/null
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/PTEmployee.java
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openjpa.persistence.inheritance.entity;
+import javax.persistence.*;
+
+/**
+ * Test case and domain classes were originally part of the reported issue
+ * OPENJPA-1536
+ *
+ * @author Jody Grassel
+ * @author Fay Wang
+ *
+ */
+@Entity
+@DiscriminatorValue("1")
+public class PTEmployee extends Employee {
+ private float hourlyWage;
+
+ public PTEmployee() {
+ super();
+ }
+
+ public float getHourlyWage() {
+ return hourlyWage;
+ }
+
+ public void setHourlyWage(float hourlyWage) {
+ this.hourlyWage = hourlyWage;
+ }
+
+}