Sorry ray, you missunderstood me,
This is what reactor does when you call load method on your record.
<cfset record.load()>
Executes load method from the abstractRecord (reactor.base.abstractRecord)
Look this code
<!-------------- CODE INSIDE LOAD METHOD OF THE RECORD -------------------->
<cfif IsDefined("arguments") AND fieldList IS 1>
<cfset fieldList = arguments[1] />
<cfelseif IsDefined("arguments") AND fieldList IS NOT 1>
<cfloop collection="#arguments#" item="item">
<cfinvoke component="#this#" method="set#item#">
<cfinvokeargument name="#item#"
value="#arguments[item]#" />
</cfinvoke>
</cfloop>
</cfif>
<cftry>
<cfset _getDao().read(_getTo(), fieldList) />
<cfcatch type="Reactor.Record.NoMatchingRecord">
<cfset nothingLoaded = true />
</cfcatch>
</cftry>
<!-------------- CODE INSIDE LOAD METHOD OF THE RECORD -------------------->
When it calls <cfset _getDao().read(_getTo(), fieldList) />
It will invoke read method in the DAO passing all arguments to it, but since
you didn't pass any (in this case) inside the DAO you'll be executing
<!-------------- CODE INSIDE READ METHOD OF THE DAO ----------------------->
<cfif Len(arguments.loadFieldList)>
<cfset UserQuery = UserGateway.createQuery() />
<cfloop list="#arguments.loadFieldList#"
index="field">
<cfset UserQuery.getWhere().isEqual("User",
field, arguments.to[field]) />
</cfloop>
<cfset qRead =
UserGateway.getByQuery(UserQuery,true) />
<cfelse>
<cfset qRead = UserGateway.getByFields(
) />
</cfif>
<!-------------- CODE INSIDE READ METHOD OF THE DAO ----------------------->
Since the arguments.loadFieldList in your case will be empty, it will
execute
<cfset qRead = UserGateway.getByFields( ) />
It should be
<cfset qRead = UserGateway.getByFields( UserId = arguments.to.UserId ) />
Why is it doing this?
Because it couldn't find the primary key during the generation
Try to run this query
SELECT
col.COLUMN_NAME as name,
CASE
WHEN colCon.CONSTRAINT_NAME IS NOT
NULL THEN 'true'
ELSE 'false'
END as primaryKey,
CASE
WHEN
columnProperty(object_id(col.TABLE_NAME), col.COLUMN_NAME, 'IsIdentity') > 0
THEN 'true'
ELSE 'false'
END AS [identity],
CASE
WHEN col.IS_NULLABLE = 'No' THEN
'false'
ELSE 'true'
END as nullable,
col.DATA_TYPE as dbDataType,
CASE
WHEN
ISNUMERIC(col.CHARACTER_MAXIMUM_LENGTH) = 1 THEN
col.CHARACTER_MAXIMUM_LENGTH
ELSE 0
END as length,
col.COLUMN_DEFAULT as [default]
FROM INFORMATION_SCHEMA.COLUMNS as col LEFT JOIN
INFORMATION_SCHEMA.TABLE_CONSTRAINTS as tabCon
ON col.TABLE_NAME = tabCon.TABLE_NAME
AND tabCon.CONSTRAINT_TYPE = 'PRIMARY KEY'
LEFT JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE
as colCon
ON col.COLUMN_NAME = colCon.COLUMN_NAME
AND col.TABLE_NAME = colCon.TABLE_NAME
AND colCon.CONSTRAINT_NAME =
tabCon.CONSTRAINT_NAME
WHERE col.TABLE_NAME = 'User'
And drop the result here.
João Fernandes
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On
Behalf Of Ray West
Sent: quinta-feira, 10 de Agosto de 2006 16:41
To: [email protected]
Subject: Re: [Reactor for CF] Ambiguous Record Problem
OK, replying to a couple of emails here. Thanks everyone for the help...
Yes the UserID field is definitely a PK. I turned it off and saved and
turned it back on to be sure it was set. Same problem exists.
While the PK was turned off I tried the shortcut method. It still worked.
I am in development mode.
I have deleted all of my project files and they were recreated... Same
problem exists.
So are you saying that I can only 'search' by fields that are primary
keys? What if I want to create a record and run a login script on it
comparing a username and password that are not keys? This works using
the shortcut method. Why should it not work by setting the properties
and loading the object?
Hope I answered everything.
Ray
João Fernandes wrote:
The problem is, when you use
<cfset record.setUserid(someval)>
<cfset record.load()>
In the read method inside UserDao.cfc if you take a look into the code I
posted in my last email, load() and load(userid=val) go through different
paths. The load() method goes through
<cfset qRead = UserGateway.getByFields(
<!------- This part is blank ------->
) />
The part in blank is where reactor should put the code to load the record
based on the primary key definition. Delete your project files and
regenerate to see if the problem persists.
João Fernandes
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On
Behalf Of Ray West
Sent: quinta-feira, 10 de Agosto de 2006 16:15
To: [email protected]
Subject: Re: [Reactor for CF] Ambiguous Record Problem
The shortcut method appears to be using the same setUserID property
setter that I am calling. And yet the shortcut method works...
Ray
Ray West wrote:
frak... well... it is not working here and I need to be able to pass the
object into a method for processing (not to mention that that is the
better way to do it) so the shortcut method won't work for this.
R
Jared Rypka-Hauer wrote:
I've been using it just fine with SQL Server for eons... well, not
eons, but a long time.
I'm trying to think of what the issue could be man. Coming up, as
usual, with a big fat blank. ;)
J
------------------------------------------------
Jared C. Rypka-Hauer
Continuum Media Group LLC
http://www.web-relevant.com
Member, Team Macromedia - ColdFusion
"That which does not kill me makes me stranger." - Yonah Schmeidler
On Aug 10, 2006, at 9:25 AM, Ray West wrote:
NP Chris,
This is an exception thrown by Reactor and not a CF error. I don't
get anything extra when I turn on debugging in CF. A query of some
sort apparently runs fine, it just returns unexpected data.
I am going to load the new version and see if there is any difference.
Have anyone reproduced this or gotten it to run correctly with SQL
Server?
Ray
Chris Phillips wrote:
I appologize Ray.
I didn't catch that you were saying that
<cfset objUser.setUserID(1) />
<cfset objUser.load() />
didn't work
and
<cfset objUser.load(UserID=1) />
did.
Which makes this rather wierd.
If it were me, I'd turn on debugging and watch the queries that CF
is generating to see how they are different.
Let us know what you see.
Regards,
Chris
On 8/9/06, *Ray West* <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>> wrote:
It is... second guess? :-)
Can anyone repro this?
Ray
Chris Phillips wrote:
> First guess is that UserID is not a PrimaryKey.
>
> On 8/9/06, *Ray West* < [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
<mailto:[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>> wrote:
>
> Hi,
>
> In MS SQL Server, whenever I create a record and do this:
>
> <cfset objUser.setUserID (1) />
> <cfset objUser.load() />
>
> I get an ambiguous record error, even though there is
only one
> record in
> the table with that ID.
>
> When I do:
>
> <cfset objUser.load(UserID=1) />
>
> It works fine.
>
> Any help appreciated...
>
> Ray
>
>
>
>
> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- --
> -- -- -- -- --
> Reactor for ColdFusion Mailing List
> [email protected] <mailto:[email protected]>
<mailto:[email protected] <mailto:[email protected]>>
> Archives at:
http://www.mail-archive.com/reactor%40doughughes.net/
> < http://www.mail-archive.com/reactor%40doughughes.net/>
> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- -- --
> -- -- -- -- --
>
>
>
>
> --
> Chris Phillips
> www.dealerpeak.com <http://www.dealerpeak.com>
<http://www.dealerpeak.com>
> Senior Application Developer
> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- -- --
> -- -- -- --
> Reactor for ColdFusion Mailing List
> [email protected] <mailto:[email protected]>
> Archives at:
http://www.mail-archive.com/reactor%40doughughes.net/
> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- -- --
> -- -- -- --
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- --
-- -- -- --
Reactor for ColdFusion Mailing List
[email protected] <mailto:[email protected]>
Archives at: http://www.mail-archive.com/reactor%40doughughes.net/
<http://www.mail-archive.com/reactor%40doughughes.net/>
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- --
-- -- -- --
--
Chris Phillips
www.dealerpeak.com <http://www.dealerpeak.com>
Senior Application Developer
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- -- -- --
Reactor for ColdFusion Mailing List
[email protected] <mailto:[email protected]>
Archives at: http://www.mail-archive.com/reactor%40doughughes.net/
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- -- -- --
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- -- -- --
Reactor for ColdFusion Mailing List
[email protected] <mailto:[email protected]>
Archives at: http://www.mail-archive.com/reactor%40doughughes.net/
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- -- -- --
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- -- -- --
Reactor for ColdFusion Mailing List
[email protected]
Archives at: http://www.mail-archive.com/reactor%40doughughes.net/
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- -- -- --
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- -- --
Reactor for ColdFusion Mailing List
[email protected]
Archives at: http://www.mail-archive.com/reactor%40doughughes.net/
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- -- --
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- --
Reactor for ColdFusion Mailing List
[email protected]
Archives at: http://www.mail-archive.com/reactor%40doughughes.net/
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- --
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- --
Reactor for ColdFusion Mailing List
[email protected]
Archives at: http://www.mail-archive.com/reactor%40doughughes.net/
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- --
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- --
Reactor for ColdFusion Mailing List
[email protected]
Archives at: http://www.mail-archive.com/reactor%40doughughes.net/
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- --
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
Reactor for ColdFusion Mailing List
[email protected]
Archives at: http://www.mail-archive.com/reactor%40doughughes.net/
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --