(旧消息): 我试图让我的Java JPA WAR-Project运行根据JPA Reference Guide。我正在使用Wildfly 8和一个MySQL数据库。但是,只要我试图坚持使用EntityManager,就会收到错误。我真的被困在这里! :(有人知道什么是错的吗?无法获取Java JPA示例运行?
(编辑): 好的,我现在的状态是下面的这个:我不能删除@ManagedBean,因为我需要从XHTML页面(RichFaces)进行调用。 ,我把所有的JPA东西放在一个单独的DbAccess类中,程序运行,但只要我按下按钮来调用Index.doContentMock(),然后链接到DbAccess.doContentMock(),我得到错误。贴在下面 哪些错误
(编辑2):。 出于某种原因了EntityManager仍然不与注射DBACCESS的changments工作后 为什么不EntityManager的工作
?我XHTML主叫类:
import com.glasses.abc.business.Content;
import java.util.List;
import javax.ejb.Stateful;
import javax.faces.bean.ManagedBean;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
@ManagedBean
public class Index {
@Inject
DbAccess dba;
public void doContentMock() {
System.out.println("XXXXX AUFRUFEN VON Index.doContentMock()");
dba.doContentMock();
}
}
我的内容实体类:
@Entity
public class Content implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String contentCode;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getContentCode() {
return this.contentCode;
}
public void setContentCode(String contentCode) {
this.contentCode = contentCode;
}
@Override
public int hashCode() {
int hash = 0;
hash += (id != null ? id.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Content)) {
return false;
}
Content other = (Content) object;
if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
return false;
}
return true;
}
@Override
public String toString() {
return "com.glasses.abc.business.Content[ id=" + id + ", contentCode='" + contentCode + "' ]";
}
}
我的新DBACCESS类:
@Stateful
public class DbAccess {
@PersistenceContext(unitName = "AbcPU", type = PersistenceContextType.EXTENDED) // default type is PersistenceContextType.TRANSACTION
EntityManager em;
public void doContentMock() {
System.out.println("XXXXX 0");
System.out.println(em);
System.out.println("XXXXX 1");
Content content = new Content();
System.out.println("XXXXX 2");
content.setId((long) 5);
System.out.println("XXXXX 3");
content.setContentCode("Hier ist ein bestimmter Code, der in die Datenbank soll!");
System.out.println("XXXXX 4");
System.out.println(content);
try {
em.persist(content);
} catch (Exception ex) {
System.out.println("XXXXX Could not persist:");
System.out.println(ex.getMessage());
}
System.out.println("XXXXX 5");
}
}
我的persistence.xml:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="AbcPU" transaction-type="JTA">
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/abc?zeroDateTimeBehavior=convertToNull"/>
<property name="javax.persistence.jdbc.password" value="pwd"/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>
</properties>
</persistence-unit>
</persistence>
我的错误:
22:58:17,695 INFO [stdout] (default task-10) XXXXX 0
22:58:17,695 INFO [stdout] (default task-10) ExtendedEntityManager [abc.war#AbcPU]
22:58:17,695 INFO [stdout] (default task-10) XXXXX 1
22:58:17,696 INFO [stdout] (default task-10) XXXXX 2
22:58:17,696 INFO [stdout] (default task-10) XXXXX 3
22:58:17,696 INFO [stdout] (default task-10) XXXXX 4
22:58:17,696 INFO [stdout] (default task-10) com.glasses.abc.business.Content[ id=5, contentCode='Hier ist ein bestimmter Code, der in die Datenbank soll!' ]
22:58:17,697 INFO [stdout] (default task-10) XXXXX Could not persist:
22:58:17,697 INFO [stdout] (default task-10) org.hibernate.PersistentObjectException: detached entity passed to persist: com.glasses.abc.business.Content
22:58:17,698 INFO [stdout] (default task-10) XXXXX 5
22:58:17,702 INFO [stdout] (default task-10) XXXXX AUFRUFEN VON getContent(0)
错误很明显。您没有创建交易。 – proulxs 2014-09-30 13:56:20
我将如何创建一个? – Socrates 2014-09-30 14:50:24