亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Spring JpaRepository 中使用 DiscriminatorColumn

在 Spring JpaRepository 中使用 DiscriminatorColumn

慕后森 2023-07-19 16:17:31
我想選擇具有客戶端角色的用戶,但出現此錯誤:導致:org.hibernate.hql.internal.ast.QuerySyntaxException:utilisateur未映射[SELECT u FROM utilisateur u WHERE u.role =:CLIENT]在org.hibernate.hql.internal.ast.QuerySyntaxException.generateQueryException(QuerySyntaxException。 java:79) ~[hibernate-core-5.3.10.Final.jar:5.3.10.Final] 在 org.hibernate.QueryException.wrapWithQueryString(QueryException.java:103) ~[hibernate-core-5.3.10.Final] .jar:5.3.10.Final] 在 org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:219) ~[hibernate-core-5.3.10.Final.jar:5.3.10.Final]在 org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:143) ~[hibernate-core-5.3.10.Final.jar:5.3.10.Final] ...Utilisateur.java:// imports omitted for brevity    @Entity    @Table(name="UTILISATEURS")    @Inheritance(strategy=InheritanceType.SINGLE_TABLE)    @DiscriminatorColumn(name="ROLE")    public class Utilisateur implements Serializable     {        @Id        @GeneratedValue(strategy=GenerationType.IDENTITY)           private long codeUtilisateur;           private String cin;           private String nom;           private String prenom;           private String username;           private String password;           private String telephone;           private String ville;           private Boolean actif;           private String adresse;        @DateTimeFormat(pattern = "dd/MM/yyyy")           private Date dateNaissance;           private String email;           private char genre;           public Utilisateur() {            super();        }        public Utilisateur(long code) {            this.codeUtilisateur = code;        }
查看完整描述

1 回答

?
天涯盡頭無女友

TA貢獻1831條經驗 獲得超9個贊

我發現您的存儲庫存在幾個問題。

  1. 您正在使用表名稱而不是EntityJPQL 查詢中的名稱。

  2. 您嘗試選擇一個List對象,但返回Utilisateur的簽名而不是。getClients()List<Client>List<Utilisateur>

  3. 您正在嘗試將角色與:CLIENT不屬于您的getClients()簽名一部分的替換值 ( ) 進行匹配。

您正在Utilisateur使用以下注釋作為父級進行配置:

@Inheritance(strategy=InheritanceType.SINGLE_TABLE)

@DiscriminatorColumn(name="ROLE")

因此,我假設您至少有一個 , 的子類Utilisateur, Client您正在嘗試查詢該子類:


@Entity

public class Client extends Utilisateur {...}

在這種情況下,請嘗試以下操作:


public interface UtilisateurRepository extends JpaRepository <Utilisateur,Long> {

    @Query ("SELECT u FROM Utilisateur u WHERE TYPE(u) = Client")

    public List<Utilisateur> getClients();

}

否則,您可能希望有一個單獨的 ClientRepository:


public interface ClientRepository extends JpaRepository<Client,Long> {

    // in which case you can just take advantage of findAll

    // which is already provided by JpaRepository

}


查看完整回答
反對 回復 2023-07-19
  • 1 回答
  • 0 關注
  • 187 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號