私はHibernateを初めて使用します。このケースをどのように表現できるか疑問があります。
-->テーブル メッセージ: - (PK) MsgSender -> テーブル 'User' への外部キー - (PK) MsgDestination -> テーブル 'User' への外部キー - (PK) MsgDateSend - MsgContent - IsReaded
-->テーブル ユーザー -(PK) ユーザー名 - ...
これは私の Message.hbm です:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="Message" table="MESSAGE">
<composite-id name="id" class="MessageId">
<key-many-to-one name="MsgSender" class="User">
<column name="msgSender"/>
</key-many-to-one>
<key-many-to-one name="MsgDestination" class="User">
<column name="msgDestination"/>
</key-many-to-one>
<key-property name="msgDateSend" type="double" column="MsgDateSend"/>
</composite-id>
<property name="msgContent" type="java.lang.String">
<column name="MsgContent" />
</property>
<property name="isReaded" type="boolean" access="field">
<column name="ISREADED" />
</property>
</class>
</hibernate-mapping>
そして、これは私のPOJOです: クラスメッセージ:
public class Message implements Serializable {
/**
*
*/
private static final long serialVersionUID = -5319468638732762052L;
private MessageId id;
private String msgContent;
private boolean isReaded;
public Message() {
this.id = new msgContentId();
}
/**
* @return the id
*/
public MessageId getId() {
return id;
}
/**
* @param id the id to set
*/
public void setMessageId(MessageId mId) {
this.id = mId;
}
/**
* @return the msgContent
*/
public String getMsgContent() {
return msgContent;
}
/**
* @param msgContent
* the msgContent to set
*/
public void setMsgContent(String msgContent) {
this.msgContent = msgContent;
}
/**
* @return the isReaded
*/
public boolean getIsReaded() {
return isReaded;
}
/**
* @param isReaded
* the isReaded to set
*/
public void setIsReaded(boolean isReaded) {
this.isReaded = isReaded;
}
}
クラス メッセージ ID:
public class MessageId implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
User msgSender;
User msgDestination;
double msgSend;
/**
* @return the msgSender
*/
public User getMsgSender() {
return msgSender;
}
/**
* @param msgSender
* the msgSender to set
*/
public void setMsgSender(User msgSender) {
this.msgSender = msgSender;
}
/**
* @return the msgDestination
*/
public User getMsgDestination() {
return msgDestination;
}
/**
* @param msgDestination
* the msgDestination to set
*/
public void setMsgDestination(User msgDestination) {
this.msgDestination = msgDestination;
}
/**
* @return the msgSend
*/
public double getMsgSend() {
return msgSend;
}
/**
* @param msgSend
* the msgSend to set
*/
public void setMsgSend(double msgSend) {
this.msgSend = msgSend;
}
}
この構造では、Hibernate は挿入、削除などを行いません... 誰かがこの問題を解決するのを手伝ってくれますか?
前もって感謝します。