java - 将 GWT AutoBean 与 Hibernate 结合使用

标签 java hibernate gwt

我尝试将 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 和 hibernate autobean 吗? 预先感谢您。

最佳答案

我认为您不能在接口(interface)上使用@javax.persistence.Entity。您必须将它与普通的Class一起使用。

所以你应该这样做:

shared包中定义一个接口(interface)

public interface Contact {

    public int getId();

    public String getId();

    public void setId(int id);

    public void setName(String name);
}

然后创建一个在您的 server 包中实现该接口(interface)的类:

public class ContactImpl implements Contact {

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

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

关于java - 将 GWT AutoBean 与 Hibernate 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20189305/

相关文章:

Java泛型方法调用

java - 无法打开 Eclipse

java - 选择一个对象,但排除 Hibernate 中的特定成员

java - DdlTransactionIsolatorJtaImpl 无法找到 TransactionManager

android - 我可以使用 gwt 开发 android 应用程序吗?

Java:如何根据对象的类型动态创建指定类型的数组?

java - java应用程序中的进度条和线程错误

java - 如何从 Hibernate 用户类型检测数据库?

java - GWT 平台 : onReveal() method is not invoked on browser refresh when application is deployed on tomcat/jboss

debugging - Chrome 中的 gwt super 开发模式调试不显示源映射中变量的调试值