سؤال

أنا أعاني قليلاً مع مفهوم الاسم المستعار في السبات.
وضعي هو ما يلي:
ترتيب

@OneToMany(cascade=CascadeType.ALL,mappedBy="m_order")
private Set<OrderDetail> m_details; 

تفاصيل الطلب

    @ManyToOne(cascade=CascadeType.ALL)
    @JoinColumn(name="product_id")
    private Product m_product;
    @ManyToOne(cascade=CascadeType.ALL)
    @JoinColumn(name="order_id")
    private Order m_order;

داو

c.createAlias("m_details", "detail").createCriteria("detail.m_product").add(Expression.idEq(productId));

لذلك أريد البحث في كل ترتيب يحتوي على منتج.
ومع ذلك ، مع هذا الاستعلام ، يستمر في إرجاع 0 أوامر ولا أرى حقًا ما أفعله خطأ.
شكرًا!

هل كانت مفيدة؟

المحلول

يبدو الاستعلام على ما يرام بالنسبة لي ... حاول تعيين "hibernate.show_sql" إلى "true" حتى تتمكن من رؤية SQL في System.out أو/وتسجيله log4j.logger.org.hibernate.sql = debug ، sql_appender

lars نعم يمكنك. معايير API - الجمعياتالاسم المستعار هو مجرد اسم قصير لاسم كامل/مسار

نصائح أخرى

لست متأكدًا من أنه يمكنك استخدام الاسم المستعار للأشياء التي ليست عمودًا ، أي ليس لديها @Column أو @JoinColumn-حاشية. ملاحظة.

هذا يبدو صحيحا.

في قسم DAO الخاص بك ، لديك بالفعل متغير يسمى "C" - هل يمكنك نشر الرمز حيث يتم تهيئة هذا؟ هذا فقط للتحقق من أنك تقوم بإنشاء المعايير الأصلية مع الترتيب.

ثم الشيء التالي للتحقق مما إذا كان يمكنك إعادة تشغيل المنتج مع هذا المعرف مع ما يلي:

Product p = (Product)session.load(Product.class, productId)

وبهذه الطريقة ، تتحقق من أن المعرف صحيح ويمكن أن يجد السبات هذا المنتج.

إذا فشلنا في البدء في النظر إلى SQL الذي تم إنشاؤه كما اقترح المعلقون الآخرون.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top