配列にBLOBを使用していないオブジェクトと同じDBテーブルに、休止状態を使用してオブジェクトのプロパティとして固定長配列を格納するソリューションを見つけようとしています。
私は現在、次のようなクラスProductionQCSessionを持っています
@Entity
public class ProductionQCSession extends IdEntity {
private Long id;
private Float velocity;
private Float velocityTarget;
private Float[] velocityProfile;
public ProductionQCSession() {
}
@Id @GeneratedValue(strategy=GenerationType.AUTO)
@Override
public Long getId() {
return id;
}
@SuppressWarnings("unused")
public void setId(Long id) {
this.id = id;
}
@Basic
public Float getVelocity() {
return velocity;
}
public void setVelocity(Float velocity) {
this.velocity = velocity;
}
@Basic
public Float[] getVelocityProfile() {
return velocityProfile;
}
public void setVelocityProfile(Float[] velocityProfile) {
this.velocityProfile = velocityProfile;
}
}
理想的には、DB構造を
id|velocity|VPValue0|VPValue1|VPValue2|VPValue3|...
21| 2.1| 0.1| 0.2| -0.1| 0.3|...
私は、velocityProfile配列に常に15個のアイテムがあり、それらの値は他のプロパティと同じくらい多くのオブジェクトのプロパティがあることを確信しています。したがって、可能であれば、それらをデータベーステーブルスキーマに追加することは理にかなっていると思います。生のテーブル印刷を行うだけでデータの概要を簡単に取得できるので、この方法を使用することをお勧めします。
現在のコードは、配列データをBLOBとして格納するだけです。
私が見てきたhttp://ndpsoftware.com/HibernateMappingCheatSheet.htmlマッピングチートシートをしますが、良い解決策を見つけるように見えることができませんでした。
私は他の誰もやらないことをやろうとしているだけですか?
基本的に、リレーショナルデータベースの概念ではない複数値フィールドを作成しようとしています。正規化されたソリューションは、それらを子テーブルに配置し、Hibernateは親行から直接アクセスできるようにします(そしてそれをコレクションとして返します)。
単一のテーブルに配置する必要がある場合は、15個の個別の列を作成する必要があります。将来的には16個が突然必要にならないことを願っています。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加