我有一个带有自定义表和字段名的带注释的实体对象,用于Spring (不是JPA)。小象:
@Data
@Table("custom_record_table")
public class Record {
@Id
@Column("id_field")
Long id;
String name;
@Column("name_short")
String shortName;
}
我想要一张田里的地形图。小象:
{"id":"id_field","name":"name","shortName":"name_short"}
得到它的正确方法是什么?
对于上下文:我计划使用这个映射来构造查询,以加载多个参考文献以及主表。现在,我使用普通反射API扫描字段及其注释,得到了这个映射。很管用,但我想发明一辆自行车.
发布于 2022-10-07 07:12:18
你要找的是JdbcMappingContext
。它应该是一个bean,所以您可以简单地在您的应用程序中自动使用它。
JdbcMappingContext mappingContext // ... autowired
Map<String, String> propToCols = new HashMap<>();
mappingContext.getRequiredPersistentEntity(Record.class).forEach(
rpp -> propToCols.put(rpp.getName(), rpp.getColumnName().getReference()
);
我是在没有IDE的情况下编写这篇文章的,这样它就会包含错误。当你有参考资料和其他东西的时候,也有一些特别的事情要考虑,但是这应该会让你开始。
发布于 2022-10-04 23:59:18
如果在记录中创建静态函数会怎么样?
@Data
@Table("custom_record_table")
public class Record
{
@Id
@Column("id_field")
Long id;
String name;
@Column("name_short")
String shortName;
static Map<String, String> getMap()
{
return Map.ofEntries (
Map.entry("id", "id_field"),
Map.entry("name", "name"),
Map.entry("shortName","name_short")
);
}
/* returning map would look like:
{"id":"id_field","name":"name","shortName":"name_short"} */
}
请注意,这将为您提供一个Map
,在该Map
中,您可以通过所知道的字段键检索字段值。
map.get("id")
将返回id_field
,等等。当您需要知道引用字段的名称时,这可能很有用。
但是,如果您只想要一个字符串表示,甚至是一个JSON,最好从这些字段创建一个JSON。
无论如何,如果我正确理解,您需要一个Map
对象,所以第一个解决方案应该这样做。
发布于 2022-10-05 00:13:32
您希望将对象转换为JSON。它们是不同的图书馆。人们最喜欢杰克逊图书馆
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectWriter;
ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
String json = ow.writeValueAsString(object);
https://stackoverflow.com/questions/73954658
复制相似问题