我有一个非常简单的声明,困扰我并返回null,尽管记录保存在数据库中!!
我有一个“administrateur”和“exploitant”实体,它们继承了“Utilisateur”实体(英文xd中的用户),如下所示:
====================== entity administrateur =============== < / p>
@Entity
@DiscriminatorValue("A")
@Table(name="ADMINISTRATEUR")
public class Administrateur extends Utilisateur{
public Administrateur(){
}
}
====================== entity utilisateur =============== < / p>
@Entity
@Inheritance(strategy=InheritanceType.JOINED)
@DiscriminatorColumn(name="TYPE_UTILISATEUR")
@Table(name="UTILISATEUR")
@Id
@GeneratedValue(strategy=GenerationType.AUTO, generator="utilisateur_seq_gen")
@SequenceGenerator(name="utilisateur_seq_gen", sequenceName="UTILISATEUR_SEQ", allocationSize = 1, initialValue = 1)
protected Long id_utilisateur;
@Column(name="NOM")
protected String nom;
@Column(name="PRENOM")
protected String prenom;
@Column(name="LOGIN")
protected String login;
@Column(name="MOT_PASSE_UTILISATEUR")
protected String mot_passe_utilisateur;
@Column(name="EMAIL")
protected String email;
====================== 实体explotant =============== < / p>
@Entity
@DiscriminatorValue("E")
@Table(name="EXPLOITANT")
public class Exploitant extends Utilisateur{
@Column(name="ROLE")
private String role;
public Exploitant(){
}
}
我使用此请求来检索用户:
public Utilisateur getUserTest(){
EntityManager em=new JPAContainerFactory().createEntityManagerForPersistenceUnit("addressbook");
em.getTransaction().begin();
TypedQuery<Utilisateur> query_user = em.createQuery("SELECT u FROM Utilisateur AS u WHERE u.id_utilisateur=1", Utilisateur.class);
em.getTransaction().commit();
return query_user.getSingleResult();
}
然后我在这里称呼它:
final Utilisateur us=saut.getUserTest();
这是一个不起作用的简单请求,对此请求也是如此:
public Utilisateur getUserFromMail(String email){
EntityManager em=new JPAContainerFactory().createEntityManagerForPersistenceUnit("addressbook");
em.getTransaction().begin();
TypedQuery<Utilisateur> query_user = em.createQuery("SELECT u FROM Utilisateur AS u WHERE u.email= :email", Utilisateur.class);
query_user.setParameter("email", email);
em.getTransaction().commit();
return query_user.getSingleResult();
}
然后我从这里叫它:
Utilisateur user=saut.getUserFromMail(emailString);
//user.setMot_passe_utilisateur(String.valueOf(pswd));
em.getTransaction().begin();
em.merge(user);
em.flush();
em.getTransaction().commit();
它说得到的结果不会取回任何结果!!
在数据库中,我100%表示结果存在:
我无法弄清楚问题,任何人都可以帮助解决相关问题。
感谢。
修改
我得到日志会出现以下错误:
Sauthentifier.java:150 =参考:return query_user.getSingleResult();
=====
Creer_encaissement.java:332=参考final Utilisateur us=saut.getUserTest();
数据库中的请求返回适当的结果。 我也注销了这个:
答案 0 :(得分:1)
您的映射正常,您的代码正常。
缺少的是ADMINISTRATEUR
;
id_utilisateur==1
表中的条目
答案 1 :(得分:1)
此问题的常见原因:
如果这不起作用,请尝试保持Utilisateur,然后重新读取相同的实例。