gpt4 book ai didi

mysql - Hibernate:在一个数据库表行中存储固定长度的数组

转载 作者:行者123 更新时间:2023-11-29 22:31:21 29 4
gpt4 key购买 nike

我一直在尝试找到一种解决方案,将固定长度数组存储为使用 hibernate 的对象的属性,该对象与不使用 BLOB 数组的对象位于同一数据库表中。

我目前有一个 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;
}
}

理想情况下,我希望数据库结构是

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 个列。

关于mysql - Hibernate:在一个数据库表行中存储固定长度的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29750087/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com