JAVA - hibernate - создание нового запроса в DAO - PullRequest
0 голосов
/ 31 января 2020

Привет, у меня возникла проблема с созданием динамического c запроса с hibernate:

@SuppressWarnings("unchecked")
public List<EnvironmentConfiguration> findEnviromentProperty(String environment) {
    EntityManagerHelper.log(
            "finding property EnvironmentConfiguration instances", Level.INFO,
            null);
    try {
        final String queryString = "(select e.name as environment,\n" + 
                "       SUBSTRING_INDEX(ec.name ,'.',-1) as property,\n" + 
                "       ec.value \n" + 
                "from pkca_test_db.ENVIRONMENT e, pkca_test_db.ENVIRONMENT_CONFIGURATION ec\n" + 
                "where e.ID=ec.ID_ENVIRONMENT      \n" + 
                "and e.name=" + environment +"= :propertyValue )\n" + 
                "union \n" + 
                "(select b.name  as environment,\n" + 
                "       SUBSTRING_INDEX(bc.name ,'.',-1) as property,\n" + 
                "       bc.value \n" + 
                "from pkca_test_db.ENVIRONMENT b, pkca_test_db.ENVIRONMENT_CONFIGURATION bc\n" + 
                "where b.ID=bc.ID_ENVIRONMENT  \n" + 
                "and b.id=1) ;";
        Query query = getEntityManager().createQuery(queryString);
        query.setParameter("propertyValue", environment);
        return query.getResultList();
    } catch (RuntimeException re) {
        EntityManagerHelper.log("find all failed", Level.FATAL, re);
        throw re;
    }
}

это значение e.name = "+ environment +" =: propertyValue должно быть параметром. Есть ли ошибка в синтаксисе запроса?

Спасибо

1 Ответ

0 голосов
/ 31 января 2020

Я не понимаю, что вы пытаетесь делать там. В вашем случае запрос будет выглядеть примерно так ...e.name=*value*= :propertyValue....

Возможно, что вы хотите сделать, это ...e.name=" + environment + " union.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...