2014-01-09 5 views
2

Я новичок в спящий режим и в моем текущем проекте спящем конфигурационный файл, я обнаружил некоторые коды, как показано ниже:Что такое использование параметра в Hibernate <generator> тег?

<id name="id" column="ANNOBATCHJOBLOGID"> 
    <generator class="sg.gov.frontier.core.techinfra.persistence.dao.SequenceGeneratorYYYYMMDD"> 
     <param name="sequence">ANNO_BATCH_JOB_LOG_SEQ</param> 
    </generator> 
</id> 

просто чувствовать путать о Парам тега, может кто-то сказать мне, что использование этого? а также «ANNO_BATCH_JOB_LOG_SEQ» .thanks много класс

SequenceGeneratorYYYYMMDD здесь:

public class SequenceGeneratorYYYYMMDD extends SequenceGenerator { 
    protected Logger logger = Logger.getLogger(SequenceGeneratorYYYYMMDD.class); 
    public String sequenceName; 
    public String parameters; 

    public static final long SEQUENCE_MIN_NUMBER = 1; 
    public static final long SEQUENCE_MAX_NUMBER = 999999; 
    public static final long SEQUENCE_INCREMENT_NUMBER = 1; 
    public static final long SEQUENCE_START_NUMBER = 1; 

    public SequenceGeneratorYYYYMMDD() { 
     super(); 
    } 

    public long getNextSequenceForSequenceName(String strSequenceName) 
      throws DataAccessObjectException { 
     final SequenceDao sequenceDao = new SequenceDao(); 

     Long sequence = sequenceDao.getNextKey(strSequenceName); 

     return sequence; 
    } 

    public void configure(Type type, Properties params, Dialect dialect) 
      throws MappingException { 
     this.sequenceName = getString(SEQUENCE, params, "hibernate_sequence"); 
     this.parameters = params.getProperty(PARAMETERS); 
     String schemaName = params.getProperty(SCHEMA); 
     String catalogName = params.getProperty(CATALOG); 

     if (sequenceName.indexOf('.') < 0) { 
      sequenceName = Table.qualify(catalogName, schemaName, sequenceName); 
     } 

    } 

    public String getString(String property, Properties properties, 
      String defaultValue) { 
     String propValue = properties.getProperty(property); 
     return propValue == null ? defaultValue : propValue; 
    } 

    public Serializable generate(SessionImplementor session, Object obj) 
      throws HibernateException { 

     String result = DateUtil.convertDateToDateString(new DateTime(), 
       "yyMMddHH"); 

     try { 
      result = result 
        + StringUtil 
          .leftPad(
            String.valueOf(getNextSequenceForSequenceName(sequenceName)), 
            '0', 8); 
     } catch (DataAccessObjectException e) { 
      throw new HibernateException(e.getMessage(), e.getCause()); 
     } 

     logger.debug("Generated sequence no. " + result); 
     return new Long(result); 

    } 
} 

, как я могу знать, какой метод мне нужно передать из параметров? хотя представляется метод getNextSequenceForSequenceName().

+1

Давайте посмотрим ваш класс 'SequenceGeneratorYYYYMMDD'. –

+0

Да выглядит как последовательность, жаль, что я был очевиден, но что-то классное, что я нашел, это некоторые аннотации, которые вы можете контролировать, связанные с этим. Последовательности Google в спящем режиме, чтобы найти их. Я думаю, что параметр сообщает программе, что ANNO_BATCH_JOB_LOG_SEQ является последовательностью. Помещенный с тегом генератора в качестве родителя, вероятно, говорит, что спящий режим использует эту последовательность с генератором. Считаете ли вы, что это связано с каротажем? –

ответ

0

От Hibernate docs 5.1.4.1. Generator

Необязательных <generator> детей имен элементов класса Java используется для генерации уникальных идентификаторов для экземпляров постоянного класса. Если для настройки или инициализации экземпляра генератора требуются какие-либо параметры, они передаются с использованием элемента <param>.

<id name="id" type="long" column="cat_id"> 
    <generator class="org.hibernate.id.TableHiLoGenerator"> 
      <param name="table">uid_table</param> 
      <param name="column">next_hi_value_column</param> 
    </generator> 
</id> 
+0

, но в моем классе генератора есть несколько методов. как я могу узнать, какой метод мне нужно передать? –

Смежные вопросы