gpt4 book ai didi

java - 将 GWT AutoBean 与 Hibernate 结合使用

转载 作者:太空宇宙 更新时间:2023-11-04 15:23:07 25 4
gpt4 key购买 nike

我尝试将 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com