我正在尝试使用Jackson(de)将我的JPA实体序列化为JSON,以便通过我们的API发布实体状态。 FWIW我正在使用hibernate作为JPA提供程序。
我遇到的问题可以通过一个简单的一对多的Person to Address示例来说明:
@Entity
@Table(name="Person")
public class Person implements Serializable
{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String name;
// getters & setters
}
@Entity
@Table(name="Address")
public class Address implements Serializable
{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String addressStr;
@ManyToOne
@JoinColumn(name="personId")
private Person person;
// getters & setters
}
现在,我希望能够接受诸如此类的JSON来创建地址请求:
{
"personId": 1,
"addressStr": "123 Somestreet. Fooville, AK. 11111"
}
并使用ObjectMapper创建我的Address实例并保持它。但是,我不知道你可以同时拥有与实体的映射关系和它的外键的setter。
非常感谢任何想法或指导!
答案 0 :(得分:1)
您可以尝试将外键公开为属性,如Hibernate - Foreign keys instead of Entities中所述。请注意,因为外键的值和对象gettter的值不会始终匹配。
但是,我认为最好有一些代码来完成解释JSON的工作。您的代码可以获取personId
值,从数据库中查找实体,如果不存在则生成有意义的异常,并设置person
属性。