سؤال

لدي كائن Java DSL ، أي Pojo الذي يعود this في المستوطنين بالإضافة إلى أن Getters/Setters لديهم نمط تسمية غير عادي:

public class Demo {
    private long id;
    private String name;
    private Date created;

    public Demo id (long value) { id = value; return this; }
    public String id () { return id; }
    public Demo name (String value) { name = value; return this; }
    public String name () { return name; }
    public Demo created (Date value) { created = value; return this; }
    public Date created () { 
        if (created == null) created = new Date ();

        return created;
    }

}

هل من الممكن إخبار JPA باستخدام "Name (String)" و "Name ()" كطريقة Setter/Getter؟

تحرير] مشكلتي هي created الحقل أعلاه. لهذا الحقل ، أريد JPA استخدام "getter" created() لذلك سيكون الحقل دائمًا غير خبيث.

أم أن هناك طريقة لإخبار JPA للاستخدام CURRENT TIMESTAMP عند إنشاء كائن جديد مع created == null?

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

المحلول

وفقًا لمواصفات JPA (انظر JSR-220) الفصل 2.1.1 يمكنك إخبار JPA باستخدام الوصول الميداني بدلاً من الوصول إلى الممتلكات عن طريق التعليق على الحقول لتخطيط المعلومات وليس أساليب Getter.

لا أظن أنه يمكنك إخبار JPA عن أي اتفاقية تسمية لاستخدامها في Getters و Setters لأنها مفهوم Java Beans أساسي.

نصائح أخرى

ألا يمكنك ببساطة الانتهاء created عندما تحدد في الفصل ، ثم تستخدم الوصول الميداني.

private Date created = new Date();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top