我使用OneToOne关系获得了下一个数据库结构:
[公司]
company_id( PK )
company_name
[ company_configuration ]
company_configuration_id(自动增量, PK )
company_id( UNIQUE KEY , FK )
company_configuration_v
我一直在使用ORMlite,我有两个表的下一个类:
@DatabaseTable(tableName = "company")
public class Company {
public static final String ID_COMPANY = "company_id";
public static final String COMPANY_NAME = "company_name";
@DatabaseField(generatedId = true, columnName = ID_COMPANY)
private int idCompany;
@DatabaseField(columnName = COMPANY_NAME)
private String companyName;
@DatabaseTable(tableName = "company_configuration")
public class CompanyConfiguration {
public static final String COMPANY_CONFIGURATION_ID = "company_configuration_id";
public static final String COMPANY_ID = "company_id";
public static final String COMPANY_CONFIGURATION_V = "company_configuration_v";
@DatabaseField(generatedId = true, columnName = COMPANY_CONFIGURATION_ID)
private int idCompanyConfiguration;
@DatabaseField(foreign = true,foreignAutoRefresh = true, columnName = COMPANY_ID)
private Company companyId;
@DatabaseField(columnName = COMPANY_CONFIGURATION_V)
private String companyConfigurationV;
这是OneToOne关系,因为我想要将表分成许多列。
正如您在上面的示例中所看到的,Company
类与CompanyConfiguration
类之间没有关系
我知道我可以将这段代码(下面的例子)添加到Company
课程中,但我不需要@ForeignCollectionField,因为该集合只包含一个CompanyConfiguration对象:
@ForeignCollectionField()
private ForeignCollection<CompanyConfiguration> companyConfigurations;
我需要在Company
类中添加这样的内容(下面的例子),并从Company
类到CompanyConfiguration
类获取引用:
@OneToOne(targetEntity = CompanyDbConfig.class)
@JoinTable(name = "company_configuration")
@JoinColumn(name = "id_company")
CompanyConfiguration companyConfiguration;
很快,我想使用ORMlite获取Company对象。请参阅下面的示例。从数据库中获取公司后,我想在公司对象中拥有和CompanyConfiguration对象。
Company company = daoCompany.queryForId(id); //daoCompany is an instance of ORMlite Dao class
是否有可能以及如何使用ORMlite进行此操作?
答案 0 :(得分:0)
我自己发布了一个OrmLite问题,因此我浏览了未回答的问题,看是否有我能回答的问题。即使这是一个古老的话题,我还是想一探究竟,以防它可以帮助某人。
我已经阅读了几次您的文章,并且我想您正在询问如何将两个表中的信息加载到一个模型中。您正在数据库中将一个很大的表分成两个,但是您希望它作为一个模型返回。如果是正确的话,这就是我的代码。假设您要使用对象来构建查询,而不要传递查询字符串。
import sys
import io
old_std_out = sys.stdout
capture_io = io.StringIO()
sys.stdout = capture_io
print("what you want to print")
# get what you just printed
printed = capture_io.getvalue()
sys.stdout = old_std_out
capture_io.close()
您将保留现有模型,以便将它们用作DTO。您只需要使用上面的新模型模型来传回您想要的确切属性即可。
*我是在Notepad ++中写的,请原谅任何错别字。