ORMLite - OneToOne关系

时间:2017-07-12 12:54:21

标签: java ormlite one-to-one

我使用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进行此操作?

1 个答案:

答案 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 ++中写的,请原谅任何错别字。