Thursday 15 March 2012

casting - Scala Option[java.util.Date] cannot be cast to Option[java.sql.Date] -


मेरे पास एक प्ले प्रपत्र है जो इस तरह दिखता है:

  val form = form (tuple)   

मैं किसी ऑब्जेक्ट में "देय डेट" को सम्मिलित करने का प्रयास कर रहा / रही हूं (/ * 5 अधिक फ़ील्ड * / "देय डेट" - & gt; वैकल्पिक (तिथि))) चालाक में <पूर्व> newAuditForm.bindFromRequest.fold (त्रुटियाँ = & gt; BadRequest (views.html। आतंक (फ़ॉर्म)), सफलता = & gt; {database.for.dataSource (DB.getDataSource ()) सत्र के साथ {चीजें .forInsert.insert Thing (success._6) .asInstanceOf [विकल्प [java.sql.Date]])}})

जहां स्लिम केवल java.sql से संबंधित है। दिनांक , और केवल java.util.Date (?) form ऑब्जेक्ट में से केवल संबंधित सौदों को चलाएं।

asInstanceOf का उपयोग करना रिटर्न:

  क्लास क्लास्ट एक्सपैशन: java.util.Date को java.sql.Date पर डाला नहीं जा सकता   

इसके लिए एक रास्ता हो सकता है मुझे इस कास्ट के लिए एक नियम लिखना संभव है ... मुझे लिखने की आवश्यकता होगी?

आप java.util.Date से java डाली नहीं जा सकते Sql.Date क्योंकि java.sql.Date एक उपवर्ग है आप क्या कर सकते हैं java.sql.Date :

  val x = new java.util.Date () val y = new java का नया उदाहरण बना सकते हैं। Sql.Date (x.getTime ())   

यदि आप इसे उपयोगी मानते हैं तो आप एक अंतर्निहित रूपांतरण को परिभाषित कर सकते हैं:

  अंतर्निहित def date2sqlDate (d: java) .atil.Date) = नया java.sql.Date (d.getTime ())   

हालांकि, यह विकल्प के अंदर परिवर्तित नहीं होगा (न ही कास्ट काम करेगा, क्योंकि यह एक नहीं है डाली लेकिन एक रूपांतरण)।

आप या तो:

  val x: विकल्प [java.util.Date] x.map (_: java.sql.Date) कर सकते हैं // अंतर्निहित रूपांतरण का उपयोग करके   

या इसे स्पष्ट रूप से लिखें:

  x.map (d = & gt; नया जावा.sql.Date (d.getTime) ())   

यदि आपको रूपांतरण की बहुत आवश्यकता है, तो आप विकल्प [java.util.Date] से विकल्प [java.sql.Date]

No comments:

Post a Comment