I need to map my global to sql. I have global structure like this:
^myGlob("mltab","main","Dta",idRow,idCol,"Index")
concretely:
^myGlob("mltab","main","Dta",3,1) = 20
^myGlob("mltab","main","Dta",3,2) = 30
^myGlob("mltab","main","Dta",3,2,"Index") = "t|1320|30|62913"
^myGlob("mltab","main","Dta",3,3) = "01.04.2013"
^myGlob("mltab","main","Dta",3,4) = 36
^myGlob("mltab","main","Dta",3,5) = 166.8
^myGlob("mltab","main","Dta",4,1) = 20
^myGlob("mltab","main","Dta",4,2) = 30
^myGlob("mltab","main","Dta",4,3) = "01.04.2013"
^myGlob("mltab","main","Dta",4,4) = 36
^myGlob("mltab","main","Dta",4,4,"Index") = "nextIndexVal"
^myGlob("mltab","main","Dta",4,5) = 166.8
.
.
.
"mltab"
,"main"
,"Dta"
and "Index"
are constant. idRow
is my primary key and idCol
isn't important for me, but causes me problem, because it can change.
I need to get something like colId=2^index="t|1320|30|62913" value to some table column(map class property). Other values I have mapped.
my current code looks like this:
Class Kza.NewClass1 Extends %Persistent [ Not ProcedureBlock, StorageStrategy = MySqlStorageStrategy ]
{
Property hyperlink As %String;
Property colId As %String;
Property id As %Integer;
Property prop1 As %String;
Property prop2 As %String;
Property prop3 As %String;
Property prop4 As %String;
Property prop5 As %String;
Index MyIndex1 On id [ IdKey, PrimaryKey, Unique ];
<Storage name="MySqlStorageStrategy">
<ExtentSize>100000</ExtentSize>
<SQLMap name="Map1">
<Global>^myGlob</Global>
<RowIdSpec name="1">
<Expression>{L2}</Expression>
<Field>id</Field>
</RowIdSpec>
<Subscript name="1">
<Expression>{id}</Expression>
</Subscript>
<Subscript name="2">
<Expression>{colId}</Expression>
</Subscript>
<Type>index</Type>
</SQLMap>
<SQLMap name="MyMasterMap">
<ConditionalWithHostVars></ConditionalWithHostVars>
<Data name="colId">
<Node>6</Node>
</Data>
<Data name="hyperlink">
<Node>"Index"</Node>
</Data>
<Data name="prop1">
<Node>1</Node>
</Data>
<Data name="prop2">
<Node>2</Node>
</Data>
<Data name="prop3">
<Node>3</Node>
</Data>
<Data name="prop4">
<Node>4</Node>
</Data>
<Data name="prop5">
<Node>5</Node>
</Data>
<Global>^myGlob</Global>
<RowIdSpec name="1">
<Expression>{L1}</Expression>
<Field>id</Field>
</RowIdSpec>
<Subscript name="1">
<Expression>"mltab"</Expression>
</Subscript>
<Subscript name="2">
<Expression>"main"</Expression>
</Subscript>
<Subscript name="3">
<Expression>"Dta"</Expression>
</Subscript>
<Subscript name="4">
<Expression>{id}</Expression>
</Subscript>
<Type>data</Type>
</SQLMap>
<StreamLocation>^Kza.testToTable1S</StreamLocation>
<Type>%CacheSQLStorage</Type>
</Storage>
}
I think my problem may be in data node definition:
<Data name="colId">
<Node>6</Node>
</Data>
<Data name="hyperlink">
<Node>"Index"</Node>
</Data>
but sadly, I am not familiar with this issue enough... So can someone help me to get column hyperlink
in my sql table with value colId=2^index=t|1320|30|62913
on row with id 3 and colId=4^index=nextIndexVal
on row id 4?