gpt4 book ai didi

java - 如何将 JSON 字符串存储为实体的属性

转载 作者:行者123 更新时间:2023-12-01 11:14:31 25 4
gpt4 key购买 nike

我正在使用 Spring MVC 制作一款游戏(正在尝试...),例如《大学风险》。我正在使用 JPA,我需要将游戏的状态(轮到玩家、国家单位等)保存在用 JSON 编码的字符串字段中,这就是让我发疯的原因。首先,我使用其他信息(id、用户所有者、状态...)创建游戏,当它第一次启动时,我想生成 JSON 并将其设置为实体并保存。我尝试使用entityManager.merge(game),但是当我查看数据库时,JSON 字段为空。我尝试制作namedquery和nativequery,但在JSON字符串中出现“这是一团糟。有什么想法为什么它不通过合并保存吗?代码类似于:

HomeController.class

public String getGame(@PathVariable("idGame") long idGame,
Model model) throws IOException {
Game g = GameDao.getGame(idGame);
if (g.getJson == null) {
g.initializeGame(); // it sets the json attribute
GameDao.update(entityManager, g);
}
}

GameDAO.class

@Transactional
public static Game update(EntityManager entityManager, Game g) {
try {
entityManager.merge(g); // if I debug here g has the json attribute setted
return entityManager.find(Game.class, g.getId()); // the game object that's returned hasn't the json field setted
} catch (Exception e) {
e.printStackTrace();
return null;
}
}

这是仓库 https://github.com/alvardsoler/reinvasion但这是西类牙语中最多的。这是九月份的考试,我没有太多时间,所以我想先粗略地做一下,然后如果有时间我会做得很好。如果我无法将 JSON 信息保存在数据库中,我会将其保存在服务器中的一个文件中,其中包含游戏的 id 或类似的内容。

最佳答案

我发现了问题。我使用 createNativeQuery 进行更新:

Query q = entityManager.createNativeQuery("update Game g SET   g.json=:json where g.id=:id");
q.setParameter("json", g.getJson());
q.setParameter("id", g.getId());
q.executeUpdate();

并在 GameDAO 的方法和 HomeController 方法中添加了 @Transactional...

关于java - 如何将 JSON 字符串存储为实体的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31990384/

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