Well folks, I hacked at the problem and finally I had success. The
conclusion was rather interesting so I thought I'd share it with
everyone.
Here's what I did:
1) I put a System.out.println() in BasePeer.doInsert() and realized that
passing an OM object through the peer results in a null Criteria. In
other words,
ProductDocument prodDoc = new ProductDocument(); //the OM object
prodDoc.setDocumentId("2000");
prodDoc.setProductId("3000");
ProductDocumentPeer.doInsert(prodDoc) // <------ you get a null
Criteria here so the insert fails
2) Therefore, I passed a Criteria into the peer and I had success!
Criteria crit = new Criteria();
crit.add(ProductDocumentPeer.DOCUMENT_ID, "2000");
crit.add(ProductDocumentPeer.PRODUCT_ID, "3000");
ProductDocumentPeer.doInsert(crit);
Note that this problem occurred on a join table (ProductDocument in this
case) with a combined primary key (Document_ID and Product_ID). This
problem did not occur in a "normal" table with a single primary key. In
other words, I was able to do the following:
Document doc = new Document();
//set doc values....
DocumentPeer.doInsert(doc);
Perhaps this is a bug? Any ideas?
Thanks,
Tom
-----Original Message-----
From: Tom Keeney
Sent: Wednesday, November 14, 2001 12:19 PM
To: [EMAIL PROTECTED]
Subject: Peer.doInsert() throwing "DB Insert attempted w/o anything
specified to insert" Exception
Hello all,
My Peer object is throwing the exception specified in the Subject line
when I run the following code:
ProductDocument prodDoc = new ProductDocument();
try
{
prodDoc.setDocumentId("2000");
prodDoc.setProductId("3000");
System.out.println("prodDoc: " +
prodDoc.toString());
System.out.println("documentid: " +
prodDoc.getDocumentId().toString());
System.out.println("productid: " +
prodDoc.getProductId().toString());
ProductDocumentPeer.doInsert(prodDoc);
}
catch (Exception ex)....
I'm attempting an insert against a many-to-many table named
Novus_Product_Document that has two primary keys, DocumentId and
ProductId.
I've traced the exception back to the doInsert() method in the BasePeer
class (see below). Apparently BasePeer thinks I have no table specified.
I am confused since I have used Peer.doInsert() successfully for a
different table. Is the problem because I'm trying to insert a primary
key value into the Novus_Product_Document table? Any ideas are much
appreciated.
public static ObjectKey doInsert(Criteria criteria,
DBConnection dbCon)
throws Exception
{
SimpleKey id = null;
// Get the table name and method for determining the primary
// key value.
String tableName = null;
Enumeration keys = criteria.keys();
if (keys.hasMoreElements())
{
tableName =
criteria.getTableName((String)keys.nextElement());
}
else
{
throw new Exception("Database insert attempted without
anything specified to insert");
}
Thanks,
Tom Keeney
Novus Consulting Group
--
To unsubscribe, e-mail:
<mailto:[EMAIL PROTECTED]>
For additional commands, e-mail:
<mailto:[EMAIL PROTECTED]>
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>