我尝试在Java对象中转换此JSON。但我正在努力改变。
{
"id": "c01cede4-cd45-11eb-b8bc-0242ac130003",
"publisherId": "nintendo",
"name": "Mario",
"timePlayed": {
"2023-05-01": 10,
"2023-05-02": 2,
"2023-05-03": 3,
"2023-05-04": 4
}
}
首先,我创建了一个名为GameData
的类,我能够保存前3个参数,没有任何问题。
我的困难是参数timePlayed
。我尝试使用注解权限关系模型创建另一个名为TimePlayed
的类,但没有成功。另外,我尝试使用Map
,而不是使用对象TimePlayed
,但它并不工作。
正如你所看到的,timePlayed
里面是一个日期和一个整数。
这是我写这个问题时的代码:GameData
类:
@Table(name = "GAME_DATA")
@Entity
@Data
public class GameData {
@Id
@GeneratedValue(strategy = GenerationType.UUID)
private String gameDataId;
private String publisherId;
private String name;
private Map<Date, String> timePlayed;
}
TimePlayed
类
@Table(name = "TIME_PLAYED")
@Data
@Entity
public class TimePlayed {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "id", nullable = false)
private Long id;
private Map<String, Integer> playedDateAndTime;
}
我猜使用第二个类不是最好的方法,但这是我到目前为止所能做的,当然,根本不起作用。
我得到了一些错误,如:
- 对象引用未保存的 transient 示例-在刷新hibernate JPA之前保存 transient 示例
- “基本”属性类型不应是Map
2条答案
按热度按时间ncgqoxb01#
通常转换成map是一个非常重要的任务,我建议改变json本身的结构,如果可能的话,例如,这样:
这将允许您将您的类带到这种形式:
至于你的错误,没有细节很难说,但最有可能的是,这是由于这样一个事实,即子实体需要保留到与父实体相同的程度,或者使用级联类型。JPA Cascade Types / Baeldang
7vux5j2d2#
我可以用这个类来解决我的问题:
这样,我就可以保存并以我需要的方式显示JSON。