私はSpring MVC WEB Appに取り組んでおり、適切な注釈を持つEntityクラスのHibernateで "良い"マッピングデザインを適用するのは難しいです。私は、Javaでデータベーステーブルを表現するための最良の設計となるものについていくつかアドバイスをしたいと思います。私の状況を理解するためのHibernateアノテーションをマッピングするための最適化された方法1対多の関係
: このORMマッピングの目標は、SentMessageテーブル内の既存の非整列化されたXMLファイルを永続化するために使用されます。 FeedBackMessageテーブルでは、すでにJavaオブジェクトに解析された既存のCSVファイル(フィードバック)を保持します。
この 'バッチ処理'に基づいて、データベースレベルで受け取ったフィードバックに基づいて、どのdocumentidがステータス(ステータス)を受け取ったかを比較する必要があります。
私は次のような設計で試してみましたが、私は、データベースにデータを挿入しようとするとき、私は "戸建エンティティエラー" を得た:
SentMessageエンティティ
@Entity
@Table(name = "SENTMESSAGES")
public class SentMessaages{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "documentid")
private String documentid;
@Column(name = "documenttitle")
private String documenttitle;
@Column(name = "language")
private String language;
@Column(name = "email")
private String email;
/***************************************/
Setters en Getters method
//****//
}
Feedbackmessageエンティティ
@Entity
@Table(name = "FEEDBACKMESSAGES")
public class FeedbackMessage {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Integer Id;
@Column(name = "documentid")
private String documentid;
@Column(name = "status")
private String status;
@Column(name = "returndate")
private Date returndate;
@Column(name = "action")
private String action;
@Column(name = "actiondate")
private String actiondate;
Other fields...
/***************************************/
Setters en Getters method
//****//
}
TABLのステートメントの作成MYSQL
CREATE TABLE `sentmessages` (
`documentid` varchar(45) DEFAULT '',
`language` varchar(30) DEFAULT NULL,
`sending_date` date DEFAULT NULL,
`customtext07` varchar(45) DEFAULT NULL,
`customtext12` varchar(45) DEFAULT NULL,
`customerid` varchar(45) DEFAULT NULL,
`email` varchar(100) DEFAULT NULL,
`documenttitle` varchar(45) DEFAULT NULL,
`count` int(11) DEFAULT NULL,
PRIMARY KEY (`documentid`)
) ENGINE=InnoDB;
CREATE TABLE `feedbackmessages` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`documentid` varchar(45) DEFAULT NULL,
`status` varchar(45) DEFAULT NULL,
`endcustomerid` varchar(45) DEFAULT NULL,
`reason` varchar(45) DEFAULT NULL,
`actiondate` date DEFAULT NULL,
`email` varchar(45) DEFAULT NULL,
`batchid` varchar(150) DEFAULT NULL,
`filename` varchar(45) DEFAULT NULL,
`channel` varchar(45) DEFAULT NULL,
`islegal` varchar(45) DEFAULT NULL,
`action` varchar(45) DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `FK_ID` (`document_id`),
CONSTRAINT `FK_DOCID` FOREIGN KEY (`document_id`) REFERENCES `sentmessages` (`documentid`)
) ENGINE=InnoDB;
おかげで、私はあなたのように私を送ったものを読みましたリンク。私は今これを設計する方法を理解しています – algorithmic