วิธีห่อหุ้มเซสชัน API ของ Hibernate เพื่อหลีกเลี่ยงคำเตือนยาสามัญที่ไม่ได้ตรวจสอบ

ฉันกำลังเขียน wrapper สำหรับ Hibernate Session API:

    @SuppressWarnings("unchecked")
    public <T> List<T> execQuery(String hql){
    Session s=sf.getCurrentSession();
    return s.createQuery(hql)
                .list();
}

ดูเหมือนว่าฟังก์ชัน list() ของ Hibernate Session API จะใช้ประเภท raw ดังนั้น ฉันจะห่อฟังก์ชันนี้ได้อย่างไร และปล่อยให้ไคลเอนต์ของเสื้อคลุมของฉันใช้อย่างปลอดภัยดังนี้:

  List<BusinessObject> bo= xxx.execQuery(...);

person lovespring    schedule 27.04.2014    source แหล่งที่มา
comment
ดูเหมือนว่าคุณเขียนมันแล้ว คุณกำลังถามอะไรกันแน่?   -  person takteek    schedule 27.04.2014
comment
ฉันสามารถหลีกเลี่ยง @SuppressWarnings(unchecked) ได้หรือไม่   -  person lovespring    schedule 27.04.2014
comment
เหตุใดคุณไม่ใช้ JPA API มาตรฐานซึ่งไม่ใช้ประเภท raw เหมือนกับที่ ole Session API ทำ   -  person JB Nizet    schedule 27.04.2014


คำตอบ (1)


ไม่มีทางที่จะหลีกเลี่ยงการมี @SuppressWarnings("unchecked") อย่างน้อยหนึ่งแห่งได้

เนื่องจาก List เป็นประเภทดิบ คุณจะต้องทำการแปลงที่ไม่ได้ตรวจสอบที่ไหนสักแห่ง วิธีที่ดีที่สุดที่คุณสามารถทำได้คือเก็บมันไว้ในที่เดียว ซึ่งเป็นสิ่งที่คุณทำกับ execQuery

person takteek    schedule 27.04.2014