gpt4 book ai didi

java - Hibernate 标签中param的用途是什么?

转载 作者:行者123 更新时间:2023-11-29 08:54:27 24 4
gpt4 key购买 nike

我是 Hibernate 的新手,在我当前的项目 hibernate 配置文件中,我发现了一些如下代码:

<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>

只是对param标签感到困惑,有人能告诉我它有什么用吗?还有“ANNO_BATCH_JOB_LOG_SEQ”。非常感谢

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() 方法。

最佳答案

来自 Hibernate docs 5.1.4.1. Generator

The optional <generator> child element names a Java class used to generate unique identifiers for instances of the persistent class. If any parameters are required to configure or initialize the generator instance, they are passed using the <param> element.

<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>

关于java - Hibernate <generator> 标签中param的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21010801/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com