У меня есть объект User
, и Role
объект. Каждый пользователь имеет одну роль. В базе данных роль является внешним ключом в таблице roles
, где каждая роль имеет только числовой идентификатор в качестве первичного ключа и некоторое текстовое имя роли («admin», «user»).Как сократить REST JSON с внешними ключами
Теперь я хочу, чтобы иметь возможность просто POST
следующие JSON:
{"name": "John", "role": "admin"}
Как сделать это?
я в конечном итоге остроумие этой ошибки:
Could not read document: Can not instantiate value of type [simple type, class Role] from String value ('admin'); no single-String constructor/factory method\n at [Source: [email protected]; line: 1, column: 17] (through reference chain: User[\"role\"]); nested exception is com.fasterxml.jackson.databind.JsonMappingException: Can not instantiate value of type [simple type, Role] from String value ('admin'); no single-String constructor/factory method\n at [Source: [email protected]; line: 1, column: 17] (through reference chain: User[\"role\"])
модель пользователя:
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@NotNull
private String name;
@NotNull
@ManyToOne
private Role role;
// Getters and setters...
}
Роль модель:
@Entity
@Table(name = "roles")
public class Role {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@NotNull
private String name;
// Getters and setters...
}
С какого пакета следует импортировать @Unique? – Pitel
Извините, я не проверял. Вы должны использовать '@Column (unique = true, nullable = false)' ('javax.persistence.Column'). См. Обновленный ответ. –