In meiner JPA-Anwendung, ich bin mit der folgenden SELECT-Anweisung einen Benutzer aus der Datenbank abgerufen werden:JPA: Warum ist die ID des ausgewählten Objekts null?
TypedQuery<AppAdmin> query = entityManager.createQuery("SELECT a FROM AppAdmin a WHERE a.username=:username", AppAdmin.class);
query.setParameter("username", username);
AppAdmin user = query.getSingleResult();
Allerdings ist der ID-Feld des Benutzers immer null, obwohl ich, dass das Feld nicht null geprüft ist in die Datenbank. Was könnte die Ursache für dieses Verhalten sein?
Die folgende Abbildung zeigt meine AppAdmin
Klasse:
@Entity
@Table(name = "u_userdetails_admin")
public class AppAdmin extends BasicUser {
/**
*
*/
private static final long serialVersionUID = -41356272870596876L;
@Id
@GeneratedValue(generator = "uuid2")
@GenericGenerator(name = "uuid2", strategy = "uuid2")
@Column(name = "id", columnDefinition = "BINARY(16)")
private UUID id;
protected AppAdmin(){}
public AppAdmin(
@JsonProperty("id") UUID id,
@JsonProperty("username") String username,
@JsonProperty("password") String password,
@JsonProperty("registrationDate") LocalDate registrationDate,
@JsonProperty("locked") boolean locked,
@JsonProperty("enabled") boolean enabled,
@JsonProperty("activationKey") String activationKey,
@JsonProperty("email") String email) {
super(id, username, password, registrationDate, locked, enabled, activationKey, email, new ArrayList<String>());
}
}
Sie sollten die verwendeten dbms und den ID-Spaltentyp präzisieren. Es kann vorkommen. – davidxxx
Das verwendete dbms ist MySQL, der ID-Spaltentyp binary (16) – user2035039