[英]How can i create only one record with Hibernate JPA Annotation
我有3个实体。 它们是:Tweet,线程和媒体。 我正在使用Hibernate JPA注释。 当我保存一个Thread对象时,它必须触发鸣叫,并且必须像线程一样自动保存tweet,当然必须保存Tweet的“ media”。
您可以看到我的实体类,如下所示。 现在,我正在研究Thread之间的Tweet。 当我使用这些代码时,正在记录的线程数与tweet对象一样多。 但是我只希望线程内有一条记录 。
保存线程后,进程必须像这样:
鸣叫表:
@Entity
@Table(name = "tbl_tweet")
public class Tweet implements Serializable {
@Id
@GeneratedValue
private long id;
@Column(name = "tweetid")
private String tweetID;
private String parentTweetID;
private String avatar;
private String owner_name;
private String owner_nick;
private String content;
private String sent_time;
private String sent_date;
private String retweet_count;
private String like_count;
private String owner_link;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name="threadid")
private Thread thread;
@OneToMany(mappedBy = "tweet",fetch = FetchType.LAZY,cascade = {CascadeType.PERSIST,CascadeType.MERGE})
private List<Media> mediaURLs;
线程表:
@Entity
@Table(name = "tbl_thread")
public class Thread implements Serializable {
@Id
@GeneratedValue
private Long id;
@Column(name = "threadid")
private String threadID;
@Transient
private List<Tweet> listOfTweets;
媒体表:
@Entity
@Table(name = "tbl_media")
public class Media implements Serializable {
@Id
@GeneratedValue
private long id;
private String mediaID;
private String mediaType;
private String mediaUrl;
private String mediaUrlHttps;
private String mediaVideoUrl;
@ManyToOne
@JoinColumn(name = "tweetid")
private Tweet tweet;
我的预期和实际结果: http : //prntscr.com/mkaul5
我改变了方式。 目前运作良好。 注释万岁!
鸣叫表:
@Entity
@Table(name = "tbl_tweet")
public class Tweet implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@Column(unique = true,nullable = false,name = "tweetID")
private String tweetID;
private String parentTweetID;
private String avatar;
private long owner_id;
private String owner_name;
private String owner_nick;
private String content;
private String sent_time;
private String sent_date;
private String retweet_count;
private String like_count;
@Transient
private String quotedTweetHtml;
@Transient
@JoinColumn(name = "threadid",referencedColumnName = "id")
private Thread thread;
@OneToMany(cascade = CascadeType.PERSIST,fetch = FetchType.EAGER)
@JoinColumn(name = "tweetID")
private List<Media> mediaURLs;
线程表:
@Entity
@Table(name = "tbl_thread")
public class Thread implements Serializable {
@Id
@GeneratedValue
private Long id;
@Column(name = "threadid")
private String threadID;
@OneToMany(cascade = CascadeType.PERSIST,fetch = FetchType.EAGER)
@JoinColumn(name = "threadid")
private List<Tweet> listOfTweets;
媒体表:
@Entity
@Table(name = "tbl_media")
public class Media implements Serializable {
@Id
@GeneratedValue
private long id;
private String mediaID;
private String mediaType;
private String mediaUrl;
private String mediaUrlHttps;
private String mediaVideoUrl;
@Transient
@JoinColumn(name = "tweetID")
private Tweet tweet;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.