Как я воплощаю именованные запросы в Быть в спящем режиме приложении аннотаций?

Проблема возникает в вашем коде, когда последний символ ввода - «A». Это потому, что ваш первый if в цикле пытается получить доступ к символу «count + 1» во время последней итерации. И поскольку в этой позиции нет символа, вы получаете ошибку индекса.

Простейшим решением было бы сделать отдельное условие if для того же самого. Обновленный фрагмент для цикла while может выглядеть следующим образом -

# while start
while count < len_: # len_ is length of input
    if count + 1 >= len_:
        break # break outta loop, copy last character

    current = inp[count]
    next_ = inp[count + 1]

    if current == 'A':
        op += ( next_ + current) # op is result
        count += 1
    else:
        op += current

     # increment counter by 1
     count += 1

# rest of the code after while is same

Другая небольшая проблема в вашем коде заключается в том, что при копировании последнего символа (после окончания цикла) вы должны использовать [] вместо () для ссылки на последний символ в строка ввода.

10
задан Pavel 7 September 2016 в 05:37
поделиться

2 ответа

Можно поместить запросы в package-info.java класс, в, скажем, базируются пакет Ваших объектов области. Однако необходимо использовать собственного Hibernate @NamedQueries и @NamedQuery аннотации, а не аннотации от javax.persistence.

Пример package-info.java файл:

@org.hibernate.annotations.NamedQueries({
    @org.hibernate.annotations.NamedQuery(
        name = "foo.findAllUsers", 
        query="from Users") 
}) 

package com.foo.domain;

Затем необходимо добавить пакет к Вашему AnnotationConfiguration. Я использую Spring, таким образом, там это - вопрос установки annonatedPackages свойство:

<bean id="sessionFactory" 
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="annotatedClasses">
      <list>
      ...
      </list>
</property>
<property name="annotatedPackages">
  <list>
      <value>com.foo.domain</value>
  </list>
</property>

Можно также поместить тип и отфильтровать определения в том же файле также.

10
ответ дан 3 December 2019 в 23:15
поделиться

Я не думаю, что это возможно, поскольку атрибут/значения свойств Аннотации должен быть доступным во время компиляции. Поэтому Строки не могут быть воплощены в файл, который должен быть считан в своего рода процессом.

Я пытался найти, было ли что-то, что пакет-info.java смог обеспечивать, но ничего не мог найти.

Альтернативная стратегия организации могла хранить запросы как константы в Классе.

В Вашем классе объекта:

@NamedQuery(name="plane.getAll", query=NamedQueries.PLANE_GET_ALL)

Затем определите класс для своих констант запроса:

public class NamedQueries {
    ...
    public static final String PLANE_GET_ALL = "select p from Plane p";
    ...
}
3
ответ дан 3 December 2019 в 23:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: