Buongiorno a tutti
devo salvare con hibernate il seguente oggetto
codice:
Session session;
session = HibernateUtil.getSessionFactory().openSession();
codice:
session.beginTransaction();
Article articolo = new Article("jj", "kk", "kll", new Date(), "kkkk", "klkl", "nmj", "it", new Date());
Set<Author> autori = new HashSet<Author>();
autori.add(new Author("a", "b", "c", "d"));
autori.add(new Author("l", "m", "n", "o"));
articolo.setAuthors(autori);
session.save(articolo);
session.flush();
session.getTransaction().commit();
l'oggetto articolo che è una relazione molti a molti (un articolo può avere più autori, e un autore può aver scritto più articoli)
come posso fare? mi da sempre errore quando salvo l'articolo
le due classi sotto sono create in automatico quando configuro hibernate. il database dove vengono salvati i dati è mysql
Grazie a tutti per l'aiuto
le classi create da hibernate direttamente dal database sono le seguenti
codice:
@Entity@Table(name="author"
,catalog="pubmedarticleset"
)
public class Author implements java.io.Serializable {
private Integer id;
private String lastName;
private String foreName;
private String initials;
private String affiliationInfo;
private Set articles = new HashSet(0);
public Author() {
}
public Author(String lastName, String foreName, String initials, String affiliationInfo) {
this.lastName = lastName;
this.foreName = foreName;
this.initials = initials;
this.affiliationInfo = affiliationInfo;
}
public Author(String lastName, String foreName, String initials, String affiliationInfo, Set articles) {
this.lastName = lastName;
this.foreName = foreName;
this.initials = initials;
this.affiliationInfo = affiliationInfo;
this.articles = articles;
}
@Id @GeneratedValue(strategy=IDENTITY)
@Column(name="Id", unique=true, nullable=false)
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
@Column(name="LastName", nullable=false, length=50)
public String getLastName() {
return this.lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
@Column(name="ForeName", nullable=false, length=50)
public String getForeName() {
return this.foreName;
}
public void setForeName(String foreName) {
this.foreName = foreName;
}
@Column(name="Initials", nullable=false, length=50)
public String getInitials() {
return this.initials;
}
public void setInitials(String initials) {
this.initials = initials;
}
@Column(name="AffiliationInfo", nullable=false, length=50)
public String getAffiliationInfo() {
return this.affiliationInfo;
}
public void setAffiliationInfo(String affiliationInfo) {
this.affiliationInfo = affiliationInfo;
}
@ManyToMany(fetch=FetchType.LAZY)
@JoinTable(name="articleauthor", catalog="pubmedarticleset", joinColumns = {
@JoinColumn(name="AuthorId", nullable=false, updatable=false) }, inverseJoinColumns = {
@JoinColumn(name="ArticleId", nullable=false, updatable=false) })
public Set getArticles() {
return this.articles;
}
public void setArticles(Set articles) {
this.articles = articles;
}
}
codice:
@Entity@Table(name="article"
,catalog="pubmedarticleset"
)
public class Article implements java.io.Serializable {
private Integer id;
private String pubModel;
private String issn;
private String citedMedium;
private Date pubDate;
private String title;
private String articleTitle;
private String abstract_;
private String language;
private Date articleDate;
private Set medlinecitations = new HashSet(0);
private Set authors = new HashSet(0);
public Article() {
}
public Article(String pubModel, String issn, String citedMedium, Date pubDate, String title, String articleTitle, String abstract_, String language, Date articleDate) {
this.pubModel = pubModel;
this.issn = issn;
this.citedMedium = citedMedium;
this.pubDate = pubDate;
this.title = title;
this.articleTitle = articleTitle;
this.abstract_ = abstract_;
this.language = language;
this.articleDate = articleDate;
}
public Article(String pubModel, String issn, String citedMedium, Date pubDate, String title, String articleTitle, String abstract_, String language, Date articleDate, Set medlinecitations, Set authors) {
this.pubModel = pubModel;
this.issn = issn;
this.citedMedium = citedMedium;
this.pubDate = pubDate;
this.title = title;
this.articleTitle = articleTitle;
this.abstract_ = abstract_;
this.language = language;
this.articleDate = articleDate;
this.medlinecitations = medlinecitations;
this.authors = authors;
}
@Id @GeneratedValue(strategy=IDENTITY)
@Column(name="Id", unique=true, nullable=false)
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
@Column(name="PubModel", nullable=false, length=50)
public String getPubModel() {
return this.pubModel;
}
public void setPubModel(String pubModel) {
this.pubModel = pubModel;
}
@Column(name="ISSN", nullable=false, length=50)
public String getIssn() {
return this.issn;
}
public void setIssn(String issn) {
this.issn = issn;
}
@Column(name="CitedMedium", nullable=false, length=50)
public String getCitedMedium() {
return this.citedMedium;
}
public void setCitedMedium(String citedMedium) {
this.citedMedium = citedMedium;
}
@Temporal(TemporalType.DATE)
@Column(name="PubDate", nullable=false, length=10)
public Date getPubDate() {
return this.pubDate;
}
public void setPubDate(Date pubDate) {
this.pubDate = pubDate;
}
@Column(name="Title", nullable=false, length=50)
public String getTitle() {
return this.title;
}
public void setTitle(String title) {
this.title = title;
}
@Column(name="ArticleTitle", nullable=false, length=50)
public String getArticleTitle() {
return this.articleTitle;
}
public void setArticleTitle(String articleTitle) {
this.articleTitle = articleTitle;
}
@Column(name="Abstract", nullable=false, length=65535)
public String getAbstract_() {
return this.abstract_;
}
public void setAbstract_(String abstract_) {
this.abstract_ = abstract_;
}
@Column(name="Language", nullable=false, length=50)
public String getLanguage() {
return this.language;
}
public void setLanguage(String language) {
this.language = language;
}
@Temporal(TemporalType.DATE)
@Column(name="ArticleDate", nullable=false, length=10)
public Date getArticleDate() {
return this.articleDate;
}
public void setArticleDate(Date articleDate) {
this.articleDate = articleDate;
}
@OneToMany(fetch=FetchType.LAZY, mappedBy="article")
public Set getMedlinecitations() {
return this.medlinecitations;
}
public void setMedlinecitations(Set medlinecitations) {
this.medlinecitations = medlinecitations;
}
@ManyToMany(fetch=FetchType.LAZY)
@JoinTable(name="articleauthor", catalog="pubmedarticleset", joinColumns = {
@JoinColumn(name="ArticleId", nullable=false, updatable=false) }, inverseJoinColumns = {
@JoinColumn(name="AuthorId", nullable=false, updatable=false) })
public Set getAuthors() {
return this.authors;
}
public void setAuthors(Set authors) {
this.authors = authors;
}
}