1. Site SiteSchedule SiteChannel 是一对一的外键关系。
2. 将site和SiteSchedule SiteChannel 之间的关联关系设置好后,就只要插入site则那两个都插入进去了。
Set set = new HashSet();
SiteSchedule siteSchedule = new SiteSchedule();
siteSchedule.setSite(siteHome.getInstance());
siteSchedule.setStatus((short)1);
set.add(siteSchedule);
siteHome.getInstance().setSiteSchedules(set);
//test function
Set set2 = new HashSet();
SiteChannel siteChannel = new SiteChannel();
siteChannel.setName("410");
siteChannel.setCreated(new Date());
siteChannel.setSite(siteHome.getInstance());
set2.add(siteChannel);
siteHome.getInstance().setSiteChannels(set2);
3. site.java
public class Site implements java.io.Serializable {
private Set<SiteChannel> siteChannels = new HashSet<SiteChannel>(0);
private Set<SiteSchedule> siteSchedules = new HashSet<SiteSchedule>(0);
4. SiteChannel.java
private Site site;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "site_id")
public Site getSite() {
return this.site;
}
5. SiteSchedule.java
private Site site;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "site_id")
public Site getSite() {
return this.site;
}
6. 数据库的表关系:
site表里面就是自己的字段。
site_channel表里面有site_id的字段,而且有外键约束的。如果没有外键约束的话,生成的实体就是private Long site_id;
site_schedule表里面有site_id的字段,而且有外键约束的。
有外键约束很关键的哦!!!!
(1)如果有外键约束就会向上面那样的实体。
SiteChannel.java中:private Site site;
site.java中:private Set<SiteChannel> siteChannels = new HashSet<SiteChannel>(0);
(2)如果没有外键约束关系的话,生成的实体。
SiteChannel.java中:private Long site_id;
site.java中:什么都没有,即没有和SiteChannel发生关系。
7. 只要往site中插入数据即可。则其它副表也插进去了。
public String persistSite()
{
siteHome.getInstance().setCreated(new Date());
siteHome.getInstance().setModified(new Date());
siteHome.persist();
8. 删除时,只调用siteHome的remove方法即可,它会帮我们自动删除关联关系的数据,action="#{siteHome.remove}" 。