乱七八糟的一些总结

Channel表

Channel.java

作为子表

/**
*/
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumns({ @JoinColumn(name = "top_id", referencedColumnName = "id") })
@XmlTransient
Channel channel;//restrict,外键关联了本表的主键。当子表存在是,主表的相关字段不能做任何操作。
/**
*/
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumns({ @JoinColumn(name = "create_user", referencedColumnName = "username") })
@XmlTransient
User user;//cascade
/**
*/
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumns({ @JoinColumn(name = "resource_id", referencedColumnName = "id") })
@XmlTransient
Resource resource;//cascade
/**
*/
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumns({ @JoinColumn(name = "site_id", referencedColumnName = "siteurl", nullable = false) })
@XmlTransient

Site site;//cascade

相对应的restrict的channel表在下方,作为主表的时候。

cascade时呢。

作为User的channel

@OneToMany(mappedBy = "user", cascade = { CascadeType.REMOVE }, fetch=FetchType.EAGER)
@XmlElement(name = "", namespace = "")

java.util.Set<net.gvsuncms.domain.Channel> channels;

作为Resource的channel

@OneToMany(mappedBy = "resource", cascade = { CascadeType.REMOVE }, fetch = FetchType.LAZY)更新时set null
@XmlElement(name = "", namespace = "")
java.util.Set<net.gvsuncms.domain.Channel> channels;

作为site的channel

@OneToMany(mappedBy = "site", cascade = { CascadeType.REMOVE }, fetch = FetchType.EAGER)
@XmlElement(name = "", namespace = "")
java.util.Set<net.gvsuncms.domain.Channel> channels;

作为主表

/**
*/
@OneToMany(mappedBy = "channel", cascade = { CascadeType.REMOVE }, fetch = FetchType.EAGER)
@XmlElement(name = "", namespace = "")

java.util.Set<net.gvsuncms.domain.Channel> channels;

吐舌头吐舌头吐舌头---------------------------------------------------------------------------------------------------

这是多对多的一个代表


Channel.java

@ManyToMany(fetch = FetchType.EAGER)

@JoinTable(

        catalog = "gvsuncms", name = "inter_tag_channel", 

        joinColumns = { @JoinColumn(name = "channel_id", referencedColumnName = "id", nullable = false, updatable = false) },

     inverseJoinColumns = { @JoinColumn(name = "tag_id", referencedColumnName = "id", nullable = false, updatable = false) })

@XmlElement(name = "", namespace = "")

java.util.Set<net.gvsuncms.domain.Tag> tags;

Tag.java

@ManyToMany(mappedBy = "tags", fetch = FetchType.LAZY)
@XmlElement(name = "", namespace = "")

java.util.Set<net.gvsuncms.domain.Channel> channels;

------------------------------------------------------------------------------------------------------------

site表


Site.java

作为子表

/**
*/
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumns({ @JoinColumn(name = "site_url", referencedColumnName = "siteurl", nullable = true) })//自己既是主键,也是外键。即有父site,有子site。子site中的某个字段拥有父site的所有属性。
@XmlTransient
Site site;

/**

*/
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumns({ @JoinColumn(name = "template_id", referencedColumnName = "id", nullable = false) })
@XmlTransient
Template template;
/**
*/
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumns({ @JoinColumn(name = "image_attachment", referencedColumnName = "id") })
@XmlTransient

Resource resource;//这里是cascade。

site/template/resource

@OneToMany(mappedBy = "template", cascade = { CascadeType.REMOVE }, fetch = FetchType.LAZY)
@XmlElement(name = "", namespace = "")

java.util.Set<net.gvsuncms.domain.Site> sites;

@OneToMany(mappedBy = "resource", cascade = { CascadeType.REMOVE }, fetch = FetchType.LAZY)
@XmlElement(name = "", namespace = "")
java.util.Set<net.gvsuncms.domain.Site> sites;

作为主表

/**
*/
@OneToMany(mappedBy = "site", cascade = { CascadeType.REMOVE }, fetch = FetchType.EAGER)
@XmlElement(name = "", namespace = "")

java.util.Set<net.gvsuncms.domain.Site> sites;

还有一个多对多


Site.java

@ManyToMany(fetch = FetchType.EAGER)

@JoinTable(

catalog = "gvsuncms", name = "inter_type_site", //这是多对多的表名。

joinColumns = { @JoinColumn(name = "siteurl", referencedColumnName = "siteurl", nullable = false, updatable = false) }, 

inverseJoinColumns = { @JoinColumn(name = "type_id", referencedColumnName = "id", nullable = false, updatable = false) })

@XmlElement(name = "", namespace = "")

java.util.Set<net.gvsuncms.domain.Type> types;

Type.java


template和type无外键

Template.java

作为主表,因为没有外键,故没有作为子表的时候。

/**
*/
@OneToMany(mappedBy = "template", cascade = { CascadeType.REMOVE }, fetch = FetchType.LAZY)
@XmlElement(name = "", namespace = "")
java.util.Set<net.gvsuncms.domain.Site> sites;//一个template对应多个site,说明site中有个template类。

多对多

/**
*/
@ManyToMany(fetch = FetchType.EAGER)

@JoinTable(

catalog = "gvsuncms", name = "template_type", 

joinColumns = { @JoinColumn(name = "template_id", referencedColumnName = "id", nullable = false, updatable = false) }, 

inverseJoinColumns = { @JoinColumn(name = "type_id", referencedColumnName = "id", nullable = false, updatable = false) })//这说明是restrict

@XmlElement(name = "", namespace = "")

java.util.Set<net.gvsuncms.domain.Type> types;

Type.java

/**
*/
@ManyToMany(mappedBy = "types", fetch = FetchType.LAZY)
@XmlElement(name = "", namespace = "")
java.util.Set<net.gvsuncms.domain.Template> templates;

扎心了,好像没什么规律,先mark一下吧。


2018/03/30更新

/**
*/
@OneToMany(mappedBy = "topCategory", cascade = { CascadeType.REMOVE }, fetch = FetchType.LAZY)
@XmlElement(name = "", namespace = "")

java.util.Set<hq.domain.Category2> category2s;

/**
*/
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumns({ @JoinColumn(name = "top_category", referencedColumnName = "name") })
@XmlTransient

Category topCategory;

就是映射的topCategory,原来映射的属性名,我一直以为是表字段……



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值