在我的JPA应用程序中,我使用以下SELECT语句从数据库中检索用户:
TypedQuery<AppAdmin> query = entityManager.createQuery("SELECT a FROM AppAdmin a WHERE a.username=:username", AppAdmin.class);
query.setParameter("username", username);
AppAdmin user = query.getSingleResult();
但是,即使我检查了数据库中的字段不为空,用户的id字段也始终为null。这种行为可能是什么原因?
以下显示我的AppAdmin
课程:
@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>());
}
}
答案 0 :(得分:0)
这解决了问题:AppAdmin
扩展BasicUser
,我在两个类中定义了一个id字段。继承策略设置为InheritanceType.JOINED
,删除AppAdmin
中的ID定义会导致ID再次加载。但是,我不确定这是否是问题的真正原因,因为它曾经工作过,直到它在某个时刻停止工作。