আমি হাইবারনেট সহ একজন নবাগত এবং নির্দিষ্ট ফিল্টারটির সাথে মেলে এমন সামগ্রীর তালিকা ফিরিয়ে দেওয়ার জন্য আমি একটি সহজ পদ্ধতি লিখছি। List<Foo>
একটি প্রাকৃতিক রিটার্ন টাইপ মনে হয়েছিল।
আমি যাই করুক না কেন, আমি কুশলী নিয়োগ না করে সংকলকটিকে খুশি মনে করতে পারি না @SuppressWarnings
।
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
public class Foo {
public Session acquireSession() {
// All DB opening, connection etc. removed,
// since the problem is in compilation, not at runtime.
return null;
}
@SuppressWarnings("unchecked") /* <----- */
public List<Foo> activeObjects() {
Session s = acquireSession();
Query q = s.createQuery("from foo where active");
return (List<Foo>) q.list();
}
}
আমি এ থেকে মুক্তি পেতে চাইSuppressWarnings
। তবে আমি যদি তা করি তবে আমি সতর্কতাটি পেয়েছি
Warning: Unchecked cast from List to List<Foo>
(আমি এটিকে উপেক্ষা করতে পারি, তবে আমি এটি প্রথম স্থানে না পেতে চাই) এবং যদি আমি .list()
ফিরে আসার অনুসারে জেনেরিকটি সরিয়ে ফেলি তবে আমি সতর্কতা পেয়ে যাব
Warning: List is a raw type. References to generic type List<E>
should be parameterized.
আমি লক্ষ্য করেছি যে org.hibernate.mapping
এটি একটি ঘোষণা করে List
; তবে এটি পুরোপুরি ভিন্ন ধরণের - Query
একটি java.util.List
, কাঁচা প্রকার হিসাবে প্রদান করে। আমি এটিকে অদ্ভুত বলে মনে করি যে সাম্প্রতিক একটি হাইবারনেট (৪.০.x) প্যারামিটারাইজড ধরণের প্রয়োগ করে না, তাই আমার সন্দেহ হয় যে এটির পরিবর্তে আমি কিছু ভুল করছি।
এটি কাস্টিং হাইবারনেট ফলাফলের মতো দেখতে অবজেক্টগুলির তালিকার মতো , তবে এখানে আমার কোনও "হার্ড" ত্রুটি নেই (সিস্টেমটি ফু টাইপ জানে এবং আমি একটি এসকিউএলকিউরি ব্যবহার করি না তবে একটি সোজা অনুসন্ধান) ery তাই আনন্দ নেই।
আমিও দিকে তাকিয়ে আছে হাইবারনেট ক্লাস কাস্ট ব্যতিক্রম যেহেতু এটি প্রতিশ্রুতি লাগছিল, কিন্তু তারপর আমি বুঝতে পারি যে আমি না আসলে কোনো পেতে Exception
, একটি কোডিং শৈলী যদি আপনি হবে - ... আমার সমস্যা শুধু একটি সতর্কবার্তা যে।
Jboss.org, হাইবারনেট ম্যানুয়াল এবং বেশ কিছু টিউটোরিয়াল উপর ডকুমেন্টেশন মধ্যে বিষয় আবরণ বলে মনে হচ্ছে না এই ধরনের (আমি সঠিক স্থানগুলি অনুসন্ধান করা হয়নি বা?) বিস্তারিত। যখন তারা বিশদে প্রবেশ করায় তারা অন-দ্য ফ্লাই কাস্টিং ব্যবহার করে - এবং এটি টিউটোরিয়ালগুলিতে যা অফিসিয়াল jboss.org সাইটে ছিল না, তাই আমি কিছুটা সতর্ক।
একবার সংকলিত কোডটি কোনও আপাত সমস্যা ছাড়াই চলে ... যা আমি জানি ... এখনও; এবং ফলাফলগুলি প্রত্যাশিত ফলাফল।
তো: আমি কি এই সঠিকভাবে করছি? আমি কি স্পষ্ট কিছু মিস করছি? কোনও "অফিসিয়াল" বা "প্রস্তাবিত" করার উপায় আছে ?