Skip to content

Instantly share code, notes, and snippets.

@thecfguy
Last active December 31, 2015 07:49
Show Gist options
  • Select an option

  • Save thecfguy/7956829 to your computer and use it in GitHub Desktop.

Select an option

Save thecfguy/7956829 to your computer and use it in GitHub Desktop.
one-to-many and many-to-one relationship
component output="false" singleton{
// Default Action
property name="masterService" inject="entityService:tmaster" scope="variables";
property name="detailService" inject="entityService:tdetail" scope="variables";
function index(event,rc,prc){
var queryService = new query();
queryService.execute(sql="delete from tmaster where id not in (select masterid from tdetail)");
queryService.execute(sql="DELETE FROM tdetail WHERE masterid not IN (select id from tmaster) or masterid is null");
var msg = {};
var myid = getTickCount();
var masterbeans = masterService.findAllWhere(criteria={},sortOrder="id desc");
var myarr = [masterbeans[1].id,masterbeans[2].id,masterbeans[3].id,masterbeans[4].id];
writeDump(myarr);
/* DELETE */
/* MASTER */
try{
var masterid = myarr[1];
masterService.delete(masterbeans[1]);
msg["delete_master"] = "Success " & masterid;
ormFlush();
}
catch(e){
msg["delete_master"] = e.message & masterid;
}
ormClearSession();
/* DELETE */
try{
var detailid = myarr[2];
detailService.delete(detailService.get(detailid));
msg["delete_detail"] = "Success " & detailid;
ormFlush();
}
catch(e){
msg["delete_detail"] = e.message & detailid;
}
/* EDIT */
/* Master */
ormClearSession();
try{
var masterbean = masterService.get(myarr[3]);
masterbean.col1 = "#myid#";
masterbean.details[1].col2 = "#myid#";
masterService.save(masterbean);
msg["update_master"] = "Success" & masterbean.id;
ormFlush();
}
catch(e){
msg["update_master"] = e.message & masterbean.id;
}
ormClearSession();
/* Detail */
try{
var detailbean = detailService.get(myarr[4]);
detailbean.col2 = "#myid+1#";
detailbean.master.col1 = "#myid+1#";
detailService.save(detailbean);
msg["update_detail"] = "Success" & detailbean.id;
ormFlush();
}
catch(e){
msg["update_detail"] = e.message & detailbean.id;
}
/* ADD */
/* MASTER */
ormClearSession();
try{
var masterbean = masterService.new({id:myid,col1:"from master"});
var detailbean = detailService.new({id:myid,col2:"from master"});
masterbean.addDetail(detailbean);
detailbean.master = masterbean;
masterService.save(masterbean);
msg["add_master"] = "Success" & myid;
ormFlush();
}
catch(e){
msg["add_master"] = e.message & myid;
}
ormClearSession();
/* DETAIL */
try{
myid = myid + 1;
var masterbean1 = masterService.new({id:myid,col1:"from detail"});
var detailbean1 = detailService.new({id:myid,col2:"from detail"});
detailbean1.master = masterbean1;
detailService.save(detailbean1);
msg["add_detail"] = "Success" & myid;
ormFlush();
}
catch(e){
msg["add_detail"] = e.message & myid;
ormClearSession();
}
writeDump(msg);abort;
event.setView("test");
}
}
component displayname="tdetail" output="false" persistent="true" {
property name="id" fieldtype="id";
property name="col2" type="string";
property name="master" fieldtype="many-to-one" cfc="tmaster" fkcolumn="masterid" cascade="refresh";
}
component displayname="tmaster" output="false" persistent="true" {
property name="id" fieldtype="id";
property name="col1" type="string";
property name="details" type="array" fkcolumn="masterid" fieldtype="one-to-many" cfc="tdetail"
cascade="all-delete-orphan" singularname="detail" inverse="true";
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment