簡體   English   中英

將GWT AutoBean與Hibernate一起使用

[英]Use GWT AutoBean with Hibernate

我嘗試將GWT AutoBean與Hibernate結合使用。 所以我寫了下面的實體類:

@Entity(name = "Contact")
public interface Contact {

    public interface ContactFactory extends AutoBeanFactory {

        ContactFactory INSTANCE = AutoBeanFactorySource.create(ContactFactory.class);

        AutoBean<Contact> createContact();       
        AutoBean<Contact> wrapContact(Contact contact);
    }

    @Id
    @Column(name = "id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    public int getId();

    @Column(name = "name")
    public String getName();

    public void setId(int id);

    public void setName(String name);
}

但是當我調用此方法時:

public void insert(Contact contact) {
    Transaction tx = session.beginTransaction();

    session.save(contact);

    tx.commit();
}

我得到以下異常:

org.hibernate.MappingException: Unknown entity: com.sun.proxy.$Proxy11

我在Google上搜索了一下,並讀到AutoBean創建了一個代理來訪問Bean的屬性。 我認為AutoBean的代理與Hibernate的代理之間可能存在沖突。 也許Hibernate無法獲取@Entity批注並獲取實體名稱屬性。

有人使用過GWT和休眠autobean嗎? 預先謝謝你。

我認為您不能在interface上使用@javax.persistence.Entity 您必須將其與普通Class一起使用。

因此,您應該這樣做:

shared包中定義一個接口

public interface Contact {

    public int getId();

    public String getId();

    public void setId(int id);

    public void setName(String name);
}

然后創建一個在server包中實現該接口的類:

public class ContactImpl implements Contact {

    @Id
    @Column(name = "id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    public int getId()  {
        return id;
    }
    ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM