hibernate 双向1对多问题
本帖最后由 qq435967718 于 2012-12-09 22:04:55 编辑 ssh框架下
ArticleMode.class文件
import static javax.persistence.GenerationType.IDENTITY;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import org.springframework.stereotype.Component;
@Component
@Entity
@Table(name = "aca_articlemode", catalog = "academic_administration")
public class ArticleMode implements java.io.Serializable {
private static final long serialVersionUID = 1L;
private Integer modeId;
private String modeName;
private String modeContent;
private Set<Article> articles = new HashSet<Article>(0);
public ArticleMode() {
}
public ArticleMode(Integer modeId, String modeName) {
this.modeId = modeId;
this.modeName = modeName;
}
public ArticleMode(Integer modeId, String modeName, String modeContent) {
this.modeId = modeId;
this.modeName = modeName;
this.modeContent = modeContent;
}
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "modeId", unique = true, nullable = false)
public Integer getModeId() {
return this.modeId;
}
public void setModeId(Integer modeId) {
this.modeId = modeId;
}
@Column(name = "modeName", nullable = false, length = 40)
public String getModeName() {
return this.modeName;
}
public void setModeName(String modeName) {
this.modeName = modeName;
}
@Column(name = "modeContent", length = 65535)
public String getModeContent() {
return this.modeContent;
}
public void setModeContent(String modeContent) {
this.modeContent = modeContent;
}
//@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "articlemode")
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "articlemode", targetEntity = Article.class)
@JoinColumn(name="articleId")
public Set<Article> getArticles() {
return articles;
}
public void setArticles(Set<Article> articles) {
this.articles = articles;
}
}
Article.class文件
import static javax.persistence.GenerationType.IDENTITY;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import org.springframework.stereotype.Component;
@Component
@Entity
@Table(name = "aca_article", catalog = "academic_administration")
public class Article implements java.io.Serializable {
private static final long serialVersionUID = 1L;
private Long articleId;
private ArticleMode articlemode;
private Directory directory;
private String title;
private String content;
private String introduction;
private String addIp;
private String originer;
private String author;
private String editor;
private String seoKeyWord;
private String seoDescription;
private Long clicks;
public Article() {
}
public Article(Long articleId, String title) {
this.articleId = articleId;
this.title = title;
}
public Article(Long articleId, ArticleMode articlemode,
Directory directory, String title, String content,
String introduction, String addIp, String originer, String author,
String editor, String seoKeyWord, String seoDescription) {
this.articleId = articleId;
this.articlemode = articlemode;
this.directory = directory;
this.title = title;
this.content = content;
this.introduction = introduction;
this.addIp = addIp;
this.originer = originer;
this.author = author;
this.editor = editor;
this.seoKeyWord = seoKeyWord;
this.seoDescription = seoDescription;
}
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "articleId", unique = true, nullable = false)
public Long getArticleId() {
return this.articleId;
}
public void setArticleId(Long articleId) {
this.articleId = articleId;
}
@ManyToOne(cascade = { CascadeType.MERGE },fetch = FetchType.EAGER)
@JoinColumn(name = "modeId")
public ArticleMode getArticlemode() {
return this.articlemode;
}
public void setArticlemode(ArticleMode articlemode) {
this.articlemode = articlemode;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "dirId")
public Directory getDirectory() {
return this.directory;
}
public void setDirectory(Directory directory) {
this.directory = directory;
}
@Column(name = "title", nullable = true, length = 50)
public String getTitle() {
return this.title;
}
public void setTitle(String title) {
this.title = title;
}
@Column(name = "content", length = 65535)
public String getContent() {
return this.content;
}
public void setContent(String content) {
this.content = content;
}
@Column(name = "introduction", length = 500)
public String getIntroduction() {
return this.introduction;
}
public void setIntroduction(String introduction) {
this.introduction = introduction;
}
@Column(name = "addIp", length = 30)
public String getAddIp() {
return this.addIp;
}
public void setAddIp(String addIp) {
this.addIp = addIp;
}
@Column(name = "originer", length = 50)
public String getOriginer() {
return this.originer;
}
public void setOriginer(String originer) {
this.originer = originer;
}
@Column(name = "author", length = 20)
public String getAuthor() {
return this.author;
}
public void setAuthor(String author) {
this.author = author;
}
@Column(name = "editor", length = 20)
public String getEditor() {
return this.editor;
}
public void setEditor(String editor) {
this.editor = editor;
}
@Column(name = "seoKeyWord", length = 50)
public String getSeoKeyWord() {
return this.seoKeyWord;
}
public void setSeoKeyWord(String seoKeyWord) {
this.seoKeyWord = seoKeyWord;
}
@Column(name = "seoDescription", length = 500)
public String getSeoDescription() {
return this.seoDescription;
}
public void setSeoDescription(String seoDescription) {
this.seoDescription = seoDescription;
}
@Column(name = "clicks")
public Long getClicks() {
return clicks;
}
public void setClicks(Long clicks) {
this.clicks = clicks;
}
}
运行自动生成的hibernate语句

为什么List<ArticleMode> articleModes = hibernateTemplate.find("from ArticleMode articleModes");取不到ArticleMode的articles字段内容呢???
[解决办法]
如果你设了延迟加载的话,可以用 获得的articleMode对象.getArticles()获得那个属性,但是要注意的是要在同一个session的作用域内。