Daha önce hiçbir zaman Java enum sınıflarını sabit değerler için kullanmamıştım, geçmişte genellikle "herkese açık final" yaklaşımını kullandım. Şimdi bir enum kullanmaya başladım ve enum adından farklı bir değer döndürmek için toString() yöntemini geçersiz kılıyorum.Java enum'u geçersiz kılar toString()
Bazı JPA kodlarım var, bunlardan biri adlandırılmış parametrelerle bir TypedQuery oluşturuyorum, bunlardan biri enum değerinin String temsilidir. Status.ACTIVE kullanarak yalnızca parametreyi ayarlarsanız, uygun "A" değerini alırım, ancak tür aslında aslında String'den ziyade bir durum olduğu için bir istisna atılır. Sadece toString() yöntemini açıkça çağırırsam çalışır. Sadece sınıf türü ne olursa olsun toString() yöntemini geçersiz kılmanın bir String türünün döndürülmesini sağlayacağını düşündüm.
TypedQuery<MechanicTimeEvent> query = entityManager().createQuery("SELECT o FROM MechanicTimeEvent o WHERE o.id.mechanicNumber = :mechanicNumber AND o.id.status = :status", MechanicTimeEvent.class);
query.setParameter("mechanicNumber", mechanicNumber);
query.setParameter("status", Status.ACTIVE.toString());
Bu alanın eşlemesini soruya ekleyebilir miyim? – Augusto
Yazmak için daha özlü bir yol arıyorsanız, 'query.setParameter (" durum ", Status.ACTIVE +" ");' çalışır. – Eric
: "Durum" türündeki "Durum" türündeki alan mı ve @ @ Enüsteli (EnumType.STRING) 'ile açıklamalı mı? Öyleyse, enumları sorgularda kullanabilmeniz gerekir. –