获取外键对象的主要解决方案是什么?

问题描述:

我有两个表:获取外键对象的主要解决方案是什么?

人员:(ID,姓名)

地址:(ID,地址,是PersonID)

这意味着每个人都有一些地址。 我有与每个表和每个外键对象的属性相关的对象。在这个例子中:

Class Persons 
{ 
    int  id; 
    string name; 
} 

Class Addresses 
{ 
    int  id; 
    string address; 
    Persons person; 
} 

当我想让所有的人与他们的地址我使用左连接。我创建了一个Address类的集合,并使用“person”属性到达每个Person。

但在某些情况下,有些人没有任何地址。我如何使用这种方法访问我的对象中的那些人。这种情况最好的方法是什么?

感谢,

+0

你为什么不使用JPA。 http://www.oracle.com/technetwork/articles/javaee/jpa-137156.html – 2012-01-31 11:31:39

+0

我在Android上使用这种方法 – breceivemail 2012-01-31 11:33:35

+0

这个类的名字应该是“Person”,而不是“Persons”:) – Manish 2012-01-31 11:34:11

我搜索,发现这个解决方案:

Class Persons 
{ 
    int  id; 
    string name; 
    AddressesCollection addresses; 
} 

Class Addresses 
{ 
    int  id; 
    string address; 
    Persons person; 
} 

你需要的人的集合,包含了所有没有地址的人。 您也可以创建一个虚拟地址,并将其与所有没有它的人联系起来。

+0

这听起来像是“Hacky” – Manish 2012-01-31 11:46:10

+0

这不是一个结构性的解决方案。 :| – breceivemail 2012-01-31 11:50:40

+0

是的,但是你可以使用左连接和合并来完成数据库中的黑客攻击。如果您想使用地址访问人员,您需要虚拟地址。 – 2012-01-31 12:16:17

,你应该做的事情是当前映射的逆过程,即,

Class Person 
{ 
    int  Id; 
    string name; 
    Address address; 
} 

Class Address 
{ 
    int  Id; 
    string Address; 
} 

这样你就可以将人映射到他的地址。如果一个人拥有多个地址,则可以使用一组地址。

对于你的班级名称而不是Person,而不是Persons,因为每个对象都指向一个实体。