gpt4 book ai didi

java - 从数据库获取值作为 key 对

转载 作者:行者123 更新时间:2023-11-30 05:44:45 24 4
gpt4 key购买 nike

我有这个表,我想将不同的值存储为键和值:

@Entity
@Table(name = "wpf_payment_attributes")
public class WpfPaymentAttributes implements Serializable {

private static final long serialVersionUID = -2629784870868584850L;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", unique = true, updatable = false, nullable = false)
private int id;

@Column(length = 255)
private String name;

@Column(length = 255)
private String global_ley;

@Column(name = "VALUE", columnDefinition = "TEXT", length = 65535)
private String value;
....
}

WpfPaymentAttributes attibutes = new WpfPaymentAttributes();
attibutes.setName("usage");
attibutes.setValue("Test Usage");
attibutes.setGlobal_key(12333);

WpfPaymentAttributes attibutes = new WpfPaymentAttributes();
attibutes.setName("name");
attibutes.setValue("Peter");
attibutes.setGlobal_key(12333);

但是我如何使用 JPA 通过一个 SQL 查询获取具有相同全局键的所有值?问题是我事先不知道表的列和值是什么。

我需要得到这个结构:

usage      | name
-------------------
Test Usage | Peter

这可以用 JPA 实现吗?

最佳答案

这是不可能的,因为 JPA 无法帮助您解决一些问题:

  • 可以有多个 WpfPaymentAttributes具有相同的值全局键和名称(但是,这可以通过使用数据库约束);
  • name 中可以有任意值列,因此您必须确保它们实际上映射到您预期的结果结构,不存在未知的“名称”等。

如果您不需要 super 通用的系统,我建议您编写一个简单的映射器,它不应该很复杂。只需获取所有 WpfPaymentAttributes通过特定global_key并应用映射。例如,这是您需要的结构:

public class Result {
private String usage;
private String name;
// ...
}

然后:

Result result = new Result();
List<WpfPaymentAttributes> attributes = entityManager.createQuery(
// query should be parameterized
"select a from WpfPaymentAttributes a where global_key = 12333"
).getResultList();
for (WpfPaymentAttributes attribute : attributes) {
String value = attribute.getValue();
switch(attribute.getName()) {
case "name":
result.setName(value);
break;
case "usage":
result.setUsage(value);
break;
default:
throw new IllegalStateException();
}
}
return result;

关于java - 从数据库获取值作为 key 对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55061097/

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