Spring JPA如何创建表,以便我可以共享公共ID?

时间:2016-11-25 20:38:40

标签: java spring hibernate spring-data-jpa

我想在Spring中创建消息系统。我将有3个模型和2个表格。我想做的是:
1)创建表“对话”=完成
2)在表格“对话”中创建新条目,其中包含转化ID和会话主题=已完成 4)创建新表“conversations_members”
5)在表“conversations_members”中创建两个新的托管,一个包含conversation_idsender_idlastviewed dateisdeleted = 0 (false)conversation_idreceiver_idlastviewed_dateisdeleted=0(false)
6)我的下一个表单,带有回复我希望使用message_id(自动生成,长ID),conversation_id,message_date和messate_text在“conversations_messages”中生成条目。

我不知道如何连接3个表中的所有conversation_id。我认为这将是“一对多”选项,但如何使用它? 最好的问候,Jędrzej。

会话模型:

@Entity
@Table(name = "conversation")
public class Conversation {

@Id
@Column(name = "conversation_id")
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

@Column(name = "conversation_subject")
private String subject;

public Long getId() {
    return id;
}

public void setId(Long id) {
    this.id = id;
}

public String getSubject() {
    return subject;
}

public void setSubject(String subject) {
    this.subject = subject;
}

public Conversation(String subject) {
    this.subject = subject;
}

public Conversation() {

}

}

ConversationMembers模型:

@Entity
@Table(name="conversation_members")
public class ConversationMembers {

@Column(name="conversation_id")
private Conversation conversation;


@Column(name="user_id")
private SiteUser user;

@Column(name="conversation_deleted",  columnDefinition="Integer(0,1) default '0'")
private int conversationDeleted;


@Column(name="column_last_viewed")
private Date date;


public Conversation getConversation() {
    return conversation;
}


public void setConversation(Conversation conversation) {
    this.conversation = conversation;
}


public SiteUser getUser() {
    return user;
}


public void setUser(SiteUser user) {
    this.user = user;
}


public int getConversationDeleted() {
    return conversationDeleted;
}


public void setConversationDeleted(int conversationDeleted) {
    this.conversationDeleted = conversationDeleted;
}


public Date getDate() {
    return date;
}


public void setDate(Date date) {
    this.date = date;
}


public ConversationMembers(Conversation conversation, SiteUser user, int    conversationDeleted, Date date) {
    this.conversation = conversation;
    this.user = user;
    this.conversationDeleted = conversationDeleted;
    this.date = date;
}
}

ConversationMessage模型:

@Entity
@Table(name="conversations_messages")
public class ConversationMessages {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="message_id")
private Long messsageId;

@Column(name="conversation_id")
private Conversation conversation;

@Column(name="message_date")
private Date message_date;

@Column(name="message_text")
private String text;

public Long getMesssageId() {
    return messsageId;
}

public void setMesssageId(Long messsageId) {
    this.messsageId = messsageId;
}

public Conversation getConversation() {
    return conversation;
}

public void setConversation(Conversation conversation) {
    this.conversation = conversation;
}

public Date getMessage_date() {
    return message_date;
}

public void setMessage_date(Date message_date) {
    this.message_date = message_date;
}

public String getText() {
    return text;
}

public void setText(String text) {
    this.text = text;
}

public ConversationMessages(Long messsageId, Conversation conversation, Date   message_date, String text) {
    this.messsageId = messsageId;
    this.conversation = conversation;
    this.message_date = message_date;
    this.text = text;
}
}

NewConversation.jsp

<form:form commandName="conversation">
<br>

<form:form commandName="conversationmembers">
To:
<form:input path="userid" type="text" name="userid" />
SUBJECT
<form:input path="subject" type="text" name="subject" />
    <button type="submit" value="start conversation" />

</form:form>
</form:form>

1 个答案:

答案 0 :(得分:0)

根据你的问题,我知道你想建立关系。所以你可以使用类似的东西

会话

<form id="contact">
  <input id="name" name="name" type="text" class="feedback-input" placeholder="Name" /> <span id="spanName"> </span>
  <input name="email" type="text" class="feedback-input" placeholder="Email" />
  <textarea name="text" class="feedback-input" placeholder="Message..."></textarea>
  <input type="submit" value="SUBMIT" />
</form>

// getter setter等等

@Entity @Table(name = "conversation") public class Conversation {

@Id
@Column(name = "conversation_id")
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

@Column(name = "conversation_subject")
private String subject;

@OnetoMany(fetch=FetchType.LAZY,cascade=CascadeType.MERGE)
private List<ConverstaionMessage> message;

@OnetoMany(fetch=FetchType.LAZY,cascade=CascadeType.MERGE)
private List<ConverstaionModel> message;

也可以使用 ConversationMessage和ConversationModel中的@ManyToOne