以下是我得到的内容。Table
注释将表格名称设置为cbhistory_article
,但是ormlite的TableInfo
表格名称为article
。
我怎样才能做正确的事?
在com.j256.ormlite.table.DatabaseTableConfig#extractTableName
中会发现,com.j256.ormlite.misc.JavaxPersistence#getEntityName
只获取实体名称而不是表名。但为什么呢?
根据this,我认为考虑使用Table
名称更好或同时使用Table
和Entity
名称。
答案 0 :(得分:1)
@Table
注释将表名设置为cbhistory_article
,但是ormlite的TableInfo
获取的表名是文章。
您没有提供用于定义实体的代码,但我认为它类似于:
@Entity
@Table(name = "cbhistory_article")
public class Article {
...
很遗憾,此时ORMLite不支持@Table
注释。我已将此代码添加到trunk,它将在4.49版本中。对不起,对不起。现在它只监听name
字段。您是否需要更多支持其他领域?
要使其发挥作用,请使用name
注释上的@Entity
字段:
@Entity(name = "cbhistory_article")
public class Article {
...
答案 1 :(得分:0)
这是我的解决方法。
@Inject
private void initDao(DataSource dataSource, @Named("jdbc.url") String url) throws SQLException
{
setConnectionSource(new DataSourceConnectionSource(dataSource, url));
DatabaseTableConfig<T> config = DatabaseTableConfig.fromClass(getConnectionSource(), dataClass);
config.setTableName(getTableName());
setTableConfig(config);
initialize();
}
private String getTableName()
{
Table table = dataClass.getAnnotation(Table.class);
if (table == null || Strings.isNullOrEmpty(table.name()))
return DatabaseTableConfig.extractTableName(dataClass);
return table.name();
}