Hi Bill,

Many-to-one relationships usually work without surprises. Can you check a few more things right before commit:

Log.debug("prices: " + product.getPriceArray());
Log.debug("product: " + price.getToProduct());

Andrus

On Apr 21, 2006, at 8:41 AM, Bill Fan wrote:

Hi,

I'm trying to do something like the following and it seems the productId
becomes null in the generated sql query.

Price price = new Price();
threadDataContext().registerNewObject(price);
price.setToProduct(product);
price.setPrice(o.getPrice());
...

The query generated was as following:
------------------------------------
INSERT INTO dbo.Price (Description, GST, IsUnitPrice, Price, PriceId,
PriceTypeId, ProductId, Qty) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
[bind: '1 box', 10, 'true', 100, 280, 1, NULL, 1]


I'm using Tomcat 5.0.28 + Spring 1.2.7 + Cayenne 1.1.4 + Struts 1.2.9

I can see and verify the productId value and the product name by placing the
following logging statements before the product object is used,
        Log.debug("product Id: " + product.getProductId());
        Log.debug("product Name: " + product.getProductName());




More details are as follow if it is required:
=============================================
In the web app, there are a Product table and a Price table. It is a "one to
many" relation from Product to Price,

The tables:
-----------
Product table:
        proudctId int PK
        productName varchar(100)
        ...

Price table:
        priceId int PK,
        productId int FK (to Product.ProductId column)
        price double
        ...

Cayenne data map:
-----------------
<db-relationship name="toProduct" source="Price" target="Product"
toMany="false">
        <db-attribute-pair source="ProductId" target="ProductId"/>
</db-relationship>

<db-relationship name="priceArray" source="Product" target="Price"
toMany="true">
                <db-attribute-pair source="ProductId" target="ProductId"/>
</db-relationship>


Many thanks in advance!
Bill

Reply via email to