How to create automatically (Fake) DAO pattern class from a original class

Note:I would like to get your feedback

You can create automatically FAKE DAO(Data Access Object) pattern class
using this function:

def createDaoFromClassName(className:String):(String,String) = {
		val clazz = Class.forName(className)
		val packageName = clazz.getPackage().getName()
		val fieldNames = clazz.getDeclaredFields().map(_.getName())
		val fPara = clazz.getDeclaredFields().map{ e => e.getType().getName() match{
		  		case "java.lang.String" => "String"
		  		case "int" => "Int"
		  		case "long" => "Long"
		  		case "float" => "Float"
		  		case "double" => "Double"
		  		case "boolean" => "Boolean"
		  		case "char" => "Char"
		  		case "byte" => "Byte"
		  		case "short" => "Short"
			  	case "java.lang.Integer" => "Int"
			  	case "java.lang.Long" => "Long"
			  	case "java.lang.Double" => "Double"
			  	case "java.lang.Float" => "Float"
			  	case "java.lang.Boolean" => "Boolean"
			  	case "java.lang.Character" => "Char"
			  	case "java.lang.Byte" => "Byte"
			  	case "java.lang.Short" => "Short"
			  	case i => i
			  }
		}
		val point = className.lastIndexOf(".")
		val originClassName =  if (point != -1) {
			className.substring(point+1,className.length())
		 }else{
		   className
		 }
		val constructor = clazz.getConstructors()(0)
		val consts = constructor.getParameterTypes().map{ e => e.getName() match{
		  		case "java.lang.String" => "String"
		  		case "int" => "Int"
		  		case "long" => "Long"
		  		case "float" => "Float"
		  		case "double" => "Double"
		  		case "boolean" => "Boolean"
		  		case "char" => "Char"
		  		case "byte" => "Byte"
		  		case "short" => "Short"
			  	case "java.lang.Integer" => "Int"
			  	case "java.lang.Long" => "Long"
			  	case "java.lang.Double" => "Double"
			  	case "java.lang.Float" => "Float"
			  	case "java.lang.Boolean" => "Boolean"
			  	case "java.lang.Character" => "Char"
			  	case "java.lang.Byte" => "Byte"
			  	case "java.lang.Short" => "Short"
			  	case i => i
			  }
		}
		//consts.foreach(println)
		val header = """package dao
import queryprj.obms
import """+className+"""
				
class """+originClassName+"""Dao {
	val className = """"+originClassName+""""
}""" + "\n"
		val update = (fieldNames,fPara).zipped map{
		  (e,f) =>{
		    "\tdef update"+e+"(ID:Any,"+e+":"+f+") = {\n\t\tval obj:"+
		    originClassName+" = obms.getObject(className, ID)\n\t\tobj."+e+" = "+e+"\n\t}\n"
		  }
		}
		val mkConstArgWT = (consts,0 to consts.length).zipped map {
		  (arg,count) => "arg"+count+":"+arg
		}
		val mkConstArg = (consts,0 to consts.length).zipped map {
		  (arg,count) => "arg"+count
		}
		
		val middle = "trait "+originClassName+"DaoUpdator extends "+originClassName+"Dao{\n\n\tdef create"+originClassName+
		"(ID:Any,"+mkConstArgWT.mkString(",")+") = {\n\t\tobms.createObject(className, ID)("+mkConstArg.mkString(",")+")\n\t}\n\tdef delete"+
		originClassName+"(ID:Any) = {\n\t\tobms.deleteObject(className, ID)\n\t}\n"+
		update.mkString+"\n}\n"
		
		val footer = "trait "+originClassName+"DaoSelector extends "+originClassName+"Dao {\n\tdef getAll : List["+
		originClassName+"] =  {\n\t\tobms.getAllList(className)\n\t}\n\tdef getByName(ID:Any):"+
		originClassName+" = {\n\t\tobms.getObject(className, ID)\n\t}\n}\n"
		
		val result = header + middle + footer
		
		println(result)
		(originClassName+"Dao.scala",result)
	  }

For example,
one original Car class below:

package domainScala
import java.util.Date

class Car(n:Int,o:String,p:Long,q:Float,r:Double,s:Boolean,t:Char,u:Byte,v:Short,f:Party,g:Date){
  var number:Int = n
  var maxCarry:Float = _ 
  def run = println(this.toString + " runs.")
  override def toString = "Car Instance(number:" + number + ",maximum payload:" + maxCarry + "t)"
}

You can automatically create this Fake DAO pattern class:

package dao
import queryprj.obms
import domainScala.Car
				
class CarDao {
	val className = "Car"
}
trait CarDaoUpdator extends CarDao{

	def createCar(ID:Any,arg0:Int,arg1:String,arg2:Long,arg3:Float,arg4:Double,arg5:Boolean,arg6:Char,arg7:Byte,arg8:Short,arg9:domainScala.Party,arg10:java.util.Date) = {
		obms.createObject(className, ID)(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10)
	}
	def deleteCar(ID:Any) = {
		obms.deleteObject(className, ID)
	}
	def updatenumber(ID:Any,number:Int) = {
		val obj:Car = obms.getObject(className, ID)
		obj.number = number
	}
	def updatemaxCarry(ID:Any,maxCarry:Float) = {
		val obj:Car = obms.getObject(className, ID)
		obj.maxCarry = maxCarry
	}

}
trait CarDaoSelector extends CarDao {
	def getAll : List[Car] =  {
		obms.getAllList(className)
	}
	def getByName(ID:Any):Car = {
		obms.getObject(className, ID)
	}
}