关联关系设置外键和没有设置外键

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}" 。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值