Когда я объединяю поля в em.CreateQuery concat
, возвращается NULL, потому что одно из моих полей может иметь NULL. Я хочу проверить NULL, как в функции Native MSSQL ISNULL (поле, 'что-то').
MyQuery есть.
entManager.createQuery("SELECT NEW " + ThumbNail.class.getName() + "(p.id,p.thumbnail,p.thumbNailModifiedDate, CONCAT(p.firstName,' ',p.lastName,' ',p.middleName)) FROM Person p").setHint("eclipselink.refresh", "true").getResultList();
Этот тоже пробовал
entManager.createQuery("SELECT NEW " + ThumbNail.class.getName() + "(p.id,p.thumbnail,p.thumbNailModifiedDate, CONCAT(FUNC('ISNULL',p.firstName,''),' ',FUNC('ISNULL',p.lastName,''),' ',FUNC('ISNULL',p.middleName,'')) FROM Person p").setHint("eclipselink.refresh", "true").getResultList();
И это не сработало
entManager.createNativeQuery("Native SQL");
Eclipselink и JPA в целом довольно хорошо обрабатывают нули, поэтому я не видел вашей проблемы, но если для этого есть веская причина, нативные запросы просты, если не переносимы. - person Daniel B. Chapman   schedule 29.11.2012