我尝试将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我用谷歌搜索了一下,我读到AutoBean创建了一个代理来访问bean的属性。我认为AutoBean的代理和Hibernate的代理之间可能存在冲突。或者Hibernate无法获得@Entity注释和实体名称属性。
有人使用过GWT和hibernate autobean吗?提前谢谢你。
发布于 2013-11-25 22:43:32
我不认为你可以在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;
}
...
}https://stackoverflow.com/questions/20189305
复制相似问题