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

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

從另一個包添加實體時出現“QuerySyntaxException:用戶未映射”

從另一個包添加實體時出現“QuerySyntaxException:用戶未映射”

飲歌長嘯 2023-07-13 17:49:21
我制作了一個 Hibernate 配置 maven 項目(使用 maven-shade-plugin 構建),以允許我的代碼庫使用一個統一的“數據庫類”。org.hibernate.hql.internal.ast.QuerySyntaxException: User is not mapped但是,當從正在運行的項目外部調用時,該類似乎沒有映射(在運行時引發異常)。當在項目中運行時,一切正常。但是,當從項目外部運行時,Hibernate 無法映射實體。CommonDB.java(maven 包 meta1203-data 的一部分)package com.meta1203.microservices;import java.util.List;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;public class CommonDB <C extends BaseEntity> {    private Configuration cfg;    private SessionFactory sf;    private Session session;    private Class<C> c;    public CommonDB(Class<C> anoClass) {        String jdbcUrl = String.format(                "jdbc:mysql://%s/%s",                System.getenv("DB_URL"),                System.getenv("DB_NAME"));        cfg = new Configuration()                .setProperty("hibernate.connection.url", jdbcUrl)                .setProperty("hibernate.connection.username", System.getenv("DB_USERNAME"))                .setProperty("hibernate.connection.password", System.getenv("DB_PASSWORD"))                .setProperty("hibernate.connection.driver_class", "com.mysql.jdbc.Driver")                .setProperty("hibernate.connection.pool_size", "1")                .setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL5Dialect")                .setProperty("hibernate.hbm2ddl.auto", "update")                .setProperty("hibernate.show_sql", "true")                .addAnnotatedClass(anoClass.getClass());        c = anoClass;    }    public void open() {        sf = cfg.buildSessionFactory();        session = sf.openSession();    }    public void close() {        session.close();        sf.close();    }    public C findOneBy(String field, String o) {        String query = "select u from " + c.getSimpleName() + " u where u." + field + " = :id";        return session.createQuery(query, c).setParameter("id", o).getSingleResult();    } // other CRUD functions}
查看完整描述

3 回答

?
慕標5832272

TA貢獻1966條經驗 獲得超4個贊

@Entity

@Table(name = "users")

public class User extends BaseEntity {

您的實體稱為“用戶”,但它映射到一個稱為“用戶”的表。


將實體更改為用戶或將表更改為用戶。


應該可以做到這一點。


查看完整回答
反對 回復 2023-07-13
?
翻閱古今

TA貢獻1780條經驗 獲得超5個贊

嘗試:

Configuration configuration = new Configuration().configure();
        for (Class cls : getEntityClassesFromPackage("com.example.hib.entities")) {
            configuration.addAnnotatedClass(cls);
        }


查看完整回答
反對 回復 2023-07-13
?
慕姐8265434

TA貢獻1813條經驗 獲得超2個贊

哎呀,我知道發生了什么事。我的銀河大腦決定在 Class 對象上執行操作addAnnotatedClass(anoClass.getClass()),所以我試圖將 java.lang.Class 聲明為 Hibernate 實體...哦,好吧,我只是個白癡。將其更改為 justaddAnnotatedClass(anoClass)并且效果很好。



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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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