You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-dev@db.apache.org by ar...@apache.org on 2006/01/21 18:17:29 UTC
svn commit: r371086 - in
/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer:
JdbcAccessImpl.java RowReaderDefaultImpl.java sql/SelectStatement.java
sql/SqlSelectStatement.java
Author: arminw
Date: Sat Jan 21 09:17:19 2006
New Revision: 371086
URL: http://svn.apache.org/viewcvs?rev=371086&view=rev
Log:
fix OJB-91
Modified:
db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/JdbcAccessImpl.java
db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/RowReaderDefaultImpl.java
db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/sql/SelectStatement.java
db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/sql/SqlSelectStatement.java
Modified: db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/JdbcAccessImpl.java
URL: http://svn.apache.org/viewcvs/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/JdbcAccessImpl.java?rev=371086&r1=371085&r2=371086&view=diff
==============================================================================
--- db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/JdbcAccessImpl.java (original)
+++ db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/JdbcAccessImpl.java Sat Jan 21 09:17:19 2006
@@ -371,6 +371,11 @@
{
return sql;
}
+
+ public boolean isUseOjbClassColumn()
+ {
+ return false;
+ }
});
}
catch (PersistenceBrokerException e)
Modified: db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/RowReaderDefaultImpl.java
URL: http://svn.apache.org/viewcvs/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/RowReaderDefaultImpl.java?rev=371086&r1=371085&r2=371086&view=diff
==============================================================================
--- db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/RowReaderDefaultImpl.java (original)
+++ db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/RowReaderDefaultImpl.java Sat Jan 21 09:17:19 2006
@@ -38,6 +38,7 @@
* Used as key in result set row map.
*/
private static final String OJB_CONCRETE_CLASS_KEY = "ojbTemporaryNoneColumnKey";
+ public static final String OJB_CLASS_COLUMN_USED = "ojbClassColumunUsed42";
/**
* represents a zero sized parameter array
*/
@@ -192,7 +193,7 @@
}
else
{
- String ojbClass = SqlHelper.getOjbClassName(rs_stmt.m_rs);
+ String ojbClass = getOJBClassColumnName(rs_stmt);
if (ojbClass != null)
{
ClassDescriptor cld = m_cld.getRepository().getDescriptorFor(ojbClass);
@@ -214,7 +215,8 @@
*/
public void readPkValuesFrom(ResultSetAndStatement rs_stmt, Map row)
{
- String ojbClass = SqlHelper.getOjbClassName(rs_stmt.m_rs);
+
+ String ojbClass = getOJBClassColumnName(rs_stmt);
ClassDescriptor cld;
if (ojbClass != null)
@@ -321,5 +323,19 @@
public ClassDescriptor getClassDescriptor()
{
return m_cld;
+ }
+
+ private String getOJBClassColumnName(ResultSetAndStatement rsAndStmt)
+ {
+ String result = null;
+ if(rsAndStmt.m_sql != null)
+ {
+ boolean b = rsAndStmt.m_sql.isUseOjbClassColumn();
+ if(b)
+ {
+ result = SqlHelper.getOjbClassName(rsAndStmt.m_rs);
+ }
+ }
+ return result;
}
}
Modified: db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/sql/SelectStatement.java
URL: http://svn.apache.org/viewcvs/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/sql/SelectStatement.java?rev=371086&r1=371085&r2=371086&view=diff
==============================================================================
--- db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/sql/SelectStatement.java (original)
+++ db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/sql/SelectStatement.java Sat Jan 21 09:17:19 2006
@@ -43,4 +43,12 @@
* column index is not supported.
*/
public int getColumnIndex(FieldDescriptor fld);
+
+ /**
+ * If "table-per-subclass"-inheritance is used for the class specified in
+ * the {@link org.apache.ojb.broker.query.Query} the name of the "real" class to
+ * instantiate for each row of the result set was hold by a pseudo column - In this
+ * case this method returns <em>true</em>.
+ */
+ public boolean isUseOjbClassColumn();
}
Modified: db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/sql/SqlSelectStatement.java
URL: http://svn.apache.org/viewcvs/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/sql/SqlSelectStatement.java?rev=371086&r1=371085&r2=371086&view=diff
==============================================================================
--- db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/sql/SqlSelectStatement.java (original)
+++ db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/sql/SqlSelectStatement.java Sat Jan 21 09:17:19 2006
@@ -44,6 +44,7 @@
public class SqlSelectStatement extends SqlQueryStatement implements SelectStatement
{
private WeakReference fieldsForSelect;
+ private boolean useOjbClassColumn;
/**
* Constructor for SqlSelectStatement.
@@ -178,6 +179,8 @@
}
buf.append(" ELSE '").append(cld.getClassNameOfObject()).append("'");
buf.append(" END AS " + SqlHelper.OJB_CLASS_COLUMN);
+ // signal the use of the ojbClassColumn
+ setUseOjbClassColumn(true);
}
/**
@@ -475,5 +478,15 @@
}
}
return index;
+ }
+
+ public boolean isUseOjbClassColumn()
+ {
+ return useOjbClassColumn;
+ }
+
+ protected void setUseOjbClassColumn(boolean useOjbClassColumn)
+ {
+ this.useOjbClassColumn = useOjbClassColumn;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org