首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将GWT AutoBean与Hibernate结合使用

将GWT AutoBean与Hibernate结合使用
EN

Stack Overflow用户
提问于 2013-11-25 18:05:53
回答 1查看 158关注 0票数 1

我尝试将GWT AutoBean与Hibernate结合使用。因此,我编写了以下实体类:

代码语言:javascript
复制
@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);
}

但是当我调用这个方法时:

代码语言:javascript
复制
public void insert(Contact contact) {
    Transaction tx = session.beginTransaction();

    session.save(contact);

    tx.commit();
}

我得到了以下异常:

代码语言:javascript
复制
org.hibernate.MappingException: Unknown entity: com.sun.proxy.$Proxy11

我用谷歌搜索了一下,我读到AutoBean创建了一个代理来访问bean的属性。我认为AutoBean的代理和Hibernate的代理之间可能存在冲突。或者Hibernate无法获得@Entity注释和实体名称属性。

有人使用过GWT和hibernate autobean吗?提前谢谢你。

EN

回答 1

Stack Overflow用户

发布于 2013-11-25 22:43:32

我不认为你可以在interface上使用@javax.persistence.Entity。你必须和一个普通的Class一起使用它。

所以你应该这样做:

shared包中定义接口

代码语言:javascript
复制
public interface Contact {

    public int getId();

    public String getId();

    public void setId(int id);

    public void setName(String name);
}

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

代码语言:javascript
复制
public class ContactImpl implements Contact {

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

    public int getId()  {
        return id;
    }
    ...
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20189305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档