[英]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.