mongoTemplate.count не работает с классом сущностей, но работает с именем коллекции
Я пытаюсь использовать приложение sprigboot/springdata/mongodb.
У меня ниже 2 хранилище
import org.springframework.data.repository.CrudRepository;
import com.mavericksolutions.ifs.entity.SOAIFSStatus;
public interface IFSRepository extends CrudRepository<SOAIFSStatus, String>{}
2-й класс репозитория
import com.mavericksolutions.ifs.entity.SOAIFSStatus;
@Repository
public class IFSSearchRepository {
@Autowired
MongoTemplate IFSMongoTemplate;
Теперь я использую один метод для извлечения всех записей на основе входной строки
public List <SOAIFSStatus> listAllByAnalyst(String analyst)
{
List<SOAIFSStatus> ifsresult = null;
try
{
Criteria c = new Criteria();
c = c.and("Analyst").is(analyst);
if (IFSMongoTemplate== null )
throw new IllegalStateException (***MONGO TEMPLATE IS NULL***");
else
System.out.println("************TEMPLATE IS NOT NULL****");
if (IFSMongoTemplate.collectionExists(SOAIFSStatus.class))
{
System.out.println("*******COLLECTION EXISTS 1 ******");
System.out.println("QUERY RECORD COUNT =========="+ IFSMongoTemplate.count(new Query(c), "crm_ifs_status_171"));
//WORKS TILL HERE.................................
System.out.println("QUERY RECORD COUNT WITH ENTITY CLASS =========="+ IFSMongoTemplate.count(new Query(c), SOAIFSStatus.class,"crm_ifs_status_171"));
//Does not print count when used with Entity class
}
ifsresult = IFSMongoTemplate.find(new Query(c), SOAIFSStatus.class, "crm_ifs_status_171");
}
catch (Exception e)
{
e.printStackTrace();
}
return ifsresult;
}
Таким образом, mongoTemplate.count не работает с классом сущностей, но работает с именем коллекции.
Также
ifsresult = IFSMongoTemplate.find(новый запрос (c), SOAIFSStatus.class, "crm_ifs_status_171");
дает ниже исключение.
org.springframework.data.mapping.context.InvalidPersistentPropertyPath: Аналитик свойств не найден в com.mavericksolutions.ifs.entity.SOAIFSStatus! в org.springframework.data.mapping.context.AbstractMappingContext.getPersistentPropertyPath(AbstractMappingContext.java:257) в org.springframework.data.mapping.context.AbstractMappingContext.getPersistentPropertaxt.conf, ".createPropertyField(QueryMapper.java:231) по адресу org.springframework.data.mongodb.core.convert.QueryMapper.getMappedObject(QueryMapper.java:129) по адресу org.springframework.data.mongodb.ToreTount:752) на com.mavericksolutions.ifs.repository.IFSSearchRepository.listAllByAnalyst(IFSSearchRepository.java:113) по адресу com.mavericksolutions.ifs.repository.IFSSearchRepository$$FastClassBySpringCGLIB$$404c859f.invoke.co.proke.xyx.proxy.proxy.proxy.proxy.proxy.proxy.pro..java:204) по адресу org.springframework.aop.framework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:136) в org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.jop Java:656) на com.mavericksolutions.ifs.repository.IFSSearchRepository$$EnhancerBySpringCGLIB$$2d071eaf.listAllByAnalyst() на com.mavericksolutions.ifs.controller.IFSController.ifssearch(IFSController.java:57)
Ниже мой класс контроллера
@Controller
public class IFSController {
@Autowired
IFSRepository ifsrepo;
@Autowired
IFSSearchRepository ifsSearchRepo;
MongoTemplate IFSMongoTemplate;
@RequestMapping("/ifshome")
public String home (Model ifshome)
{
ifshome.addAttribute("ifslist", ifsrepo.findAll());
return "ifshome";
}
@RequestMapping(value="/ifsbyRelease",method = RequestMethod.POST)
public String ifssearch(Model model,@RequestParam String search)
{
try
{
model.addAttribute("ifslist", ifsSearchRepo.listAllByAnalyst(search));
model.addAttribute("search",search);
}
catch (Exception e)
{
e.printStackTrace();
}
return "ifshome";
}
Класс сущности:
@Entity
@Document(collection="crm_ifs_status_171")
public class SOAIFSStatus {
private String Id;
private String SRNumber;
private String SRTitle;
private Double Release;
private String Analyst;
private String IFSProvider;
private String IFSConsumer;
private String Changes;
public SOAIFSStatus() {
}
//getter and setter methods
Ценю ваш ответ относительно того, где я иду не так.
Заранее спасибо.
1 ответ
Короче говоря, поле свойства analyst
нет, где можно найти, если вы посмотрите на ошибку.
private String Analyst;
должно быть private String analyst;
и исправить это для остальных полей.
Следуйте стандартам именования, и все будет работать нормально.
http://www.oracle.com/technetwork/java/codeconventions-135099.html