需要一些帮助了解我是否在正确的轨道上,以及我需要做什么。希望有人可以参加。需要关于将对象映射到数据库,注释和一对多关系的说明
所以我有三张表,Job,Authorization和Filter。每个作业必须有一个授权和一个过滤器。当然,每个过滤器可以被多个作业使用,授权也是如此。但是,过滤器和授权不需要知道他们正在使用的作业。
因此,这是一个过滤器和授权的一对多关系,我认为是正确的?或者我偏离轨道?这是如何在数据库中建模的?我相信Job表需要在过滤和授权表中有一个外键字段。过滤和授权表需要将外键字段本身用于Job吗?
接下来,我如何在Java对象中对此进行建模,然后如何设置hibernate或java持久性注释?我相信Filter类看起来像:
class Filter {
@OnetoMany
@JoinColumn(name="filterID")
private Job job;
}
和Authorization类基本相同,那么Job类将如何显示?真正引起我兴趣的是Filter和Authorization类不需要任何关于它们关联的Job的知识,所以我没有看到它们需要实际持有对Job对象的引用。只有Job类需要保存对Filter和Authorization对象的引用。那么我真的需要上面的代码吗?
我希望有人可以帮助澄清这一切,因为我似乎无法包围我的头。数据库并不是我的强项。谢谢。
这就是我的想法。正如我所说的,Job需要知道过滤器和授权,但不是其他方式,所以我希望我不需要在Filter或Authorization类中放置任何代码。所以ManyToOne是我想要的吗?谢谢。我很困惑,虽然我见过一些其他的东西。上述代码中的authorization_id列是否引用授权表或作业表中的列?外键在哪里?就在工作表中? – cardician
authorization_id是hibernate将在Job表中为您创建的连接列的名称。您可能不会指定它,它会为您创建。此authorization_id字段将具有与Authorization对象中的相应主键完全相同的值。我会继续我的帖子。 –
非常好,谢谢!最后一点,我不确定,我需要把外键放在数据库中?我假设我需要在我的数据库中创建一个实际的外键关系,那只是在Job表上? – cardician