Tôi đang làm việc để chuyển đổi nhà cung cấp JPA kiên trì của mình từ EclipseLink 2.3 sang Hibernate 3.6.5.Final. Vấn đề là với truy vấn gốc. Lưu ý: đây không phải là vấn đề với EclipseLink. Tôi đang cố gắng để có được một giá trị vô hướng, một String
từ một bảng mà tôi không có một thực thể tuyên bố cho. Đây là mã:getSingleResult trả về proxy trên truy vấn vô hướng nguyên bản trong hibernate
Query q = em.createNativeQuery("select description from foo where foo_id = ?");
q.setParameter(1, fooId);
String description = (String)q.getSingleResult();
Với Hibernate tôi nhận được ClassCastException
vì đối tượng trả về thực sự là đối tượng proxy. Tôi không biết nó là loại gì, nhưng tôi biết nó không phải là một mảng (object.getClass().isArray()
là sai) và tôi biết nó không phải là một Danh sách (object instanceof List
là false
).
Tôi đang thiếu gì?
Giao diện nào thực hiện 'q.getSingleResult(). GetClass(). GetInterfaces()' return? –
Ahhh ... đó là những gì tôi cần. Nó thuộc loại java.sql.Clob, org.hibernate.engine.jdbc.WrappedClob và java.io.Serializable. Nếu bạn làm cho câu trả lời đó, tôi sẽ chấp nhận nó. Tôi thậm chí còn không nhận ra cột là một cái đinh và tôi ngạc nhiên khi EclipseLink đang thực hiện chuyển đổi thành String cho tôi. – Ryan
vui vì tôi có thể giúp! –