gpt4 book ai didi

java - 未在数据库中创建的实体

转载 作者:行者123 更新时间:2023-11-29 05:37:15 25 4
gpt4 key购买 nike

接下来是我让 EJB 工作的故事,希望这里有人能帮助我

这是我的服务器日志,显示我的部署成功:

2012-03-11 22:02:41,837 INFO  [org.jboss.web.tomcat.service.deployers.TomcatDeployment] (HDScanner) undeploy, ctxPath=/SE2-war
2012-03-11 22:02:41,882 INFO [org.jboss.jpa.deployment.PersistenceUnitDeployment] (HDScanner) Stopping persistence unit persistence.unit:unitName=SE2.ear/SE2-ejb.jar#wvp08heuPU
2012-03-11 22:02:42,429 WARN [org.jboss.ejb3.interceptor.InterceptorInfoRepository] (HDScanner) EJBTHREE-1852: InterceptorInfoRepository is deprecated
2012-03-11 22:02:42,650 INFO [org.jboss.profileservice.management.upload.remoting.DeployHandler] (WorkerThread#0[127.0.0.1:3125]) invoke, payload: {DeploymentTargetID=names=[SE2.ear], clientAddress=/127.0.0.1}, parameter: start
2012-03-11 22:02:42,900 INFO [org.jboss.ejb3.deployers.JBossASKernel] (HDScanner) Created KernelDeployment for: SE2-ejb.jar
2012-03-11 22:02:42,901 INFO [org.jboss.ejb3.deployers.JBossASKernel] (HDScanner) installing bean: jboss.j2ee:ear=SE2.ear,jar=SE2-ejb.jar,name=NewSessionBean,service=EJB3
2012-03-11 22:02:42,901 INFO [org.jboss.ejb3.deployers.JBossASKernel] (HDScanner) with dependencies:
2012-03-11 22:02:42,901 INFO [org.jboss.ejb3.deployers.JBossASKernel] (HDScanner) and demands:
2012-03-11 22:02:42,902 INFO [org.jboss.ejb3.deployers.JBossASKernel] (HDScanner) jboss-switchboard:appName=SE2,module=SE2-ejb,name=NewSessionBean; Required: Create
2012-03-11 22:02:42,902 INFO [org.jboss.ejb3.deployers.JBossASKernel] (HDScanner) jboss.ejb:service=EJBTimerService; Required: Described
2012-03-11 22:02:42,902 INFO [org.jboss.ejb3.deployers.JBossASKernel] (HDScanner) and supplies:
2012-03-11 22:02:42,903 INFO [org.jboss.ejb3.deployers.JBossASKernel] (HDScanner) Class:ejb.NewSessionBeanRemote
2012-03-11 22:02:42,903 INFO [org.jboss.ejb3.deployers.JBossASKernel] (HDScanner) jndi:NewSessionBean
2012-03-11 22:02:42,903 INFO [org.jboss.ejb3.deployers.JBossASKernel] (HDScanner) jndi:SE2/NewSessionBean/remote-ejb.NewSessionBeanRemote
2012-03-11 22:02:42,903 INFO [org.jboss.ejb3.deployers.JBossASKernel] (HDScanner) jndi:SE2/NewSessionBean/remote
2012-03-11 22:02:42,904 INFO [org.jboss.ejb3.deployers.JBossASKernel] (HDScanner) Added bean(jboss.j2ee:ear=SE2.ear,jar=SE2-ejb.jar,name=NewSessionBean,service=EJB3) to KernelDeployment of: SE2-ejb.jar
2012-03-11 22:02:42,980 INFO [org.jboss.ejb3.session.SessionSpecContainer] (HDScanner) Starting jboss.j2ee:ear=SE2.ear,jar=SE2-ejb.jar,name=NewSessionBean,service=EJB3
2012-03-11 22:02:43,054 INFO [org.jboss.ejb3.EJBContainer] (HDScanner) STARTED EJB: ejb.NewSessionBean ejbName: NewSessionBean
2012-03-11 22:02:43,410 INFO [org.jboss.ejb3.proxy.impl.jndiregistrar.JndiSessionRegistrarBase] (HDScanner) Binding the following Entries in Global JNDI:

SE2/NewSessionBean/remote - EJB3.x Default Remote Business Interface
SE2/NewSessionBean/remote-ejb.NewSessionBeanRemote - EJB3.x Remote Business Interface

2012-03-11 22:02:43,411 WARN [org.jboss.ejb3.TimerServiceContainer] (HDScanner) EJBTHREE-2193: using deprecated TimerServiceFactory for restoring timers
2012-03-11 22:02:43,424 INFO [org.jboss.jpa.deployment.PersistenceUnitDeployment] (HDScanner) Starting persistence unit persistence.unit:unitName=SE2.ear/SE2-ejb.jar#wvp08heuPU
2012-03-11 22:02:43,454 INFO [org.jboss.web.tomcat.service.deployers.TomcatDeployment] (HDScanner) deploy, ctxPath=/SE2-war
2012-03-11 22:02:43,561 INFO [org.jboss.web.tomcat.service.deployers.TomcatDeployment] (WorkerThread#0[127.0.0.1:3125]) undeploy, ctxPath=/SE2-war
2012-03-11 22:02:43,621 INFO [org.jboss.jpa.deployment.PersistenceUnitDeployment] (WorkerThread#0[127.0.0.1:3125]) Stopping persistence unit persistence.unit:unitName=SE2.ear/SE2-ejb.jar#wvp08heuPU
2012-03-11 22:02:43,629 INFO [org.jboss.ejb3.session.SessionSpecContainer] (WorkerThread#0[127.0.0.1:3125]) Stopping jboss.j2ee:ear=SE2.ear,jar=SE2-ejb.jar,name=NewSessionBean,service=EJB3
2012-03-11 22:02:43,781 INFO [org.jboss.ejb3.EJBContainer] (WorkerThread#0[127.0.0.1:3125]) STOPPED EJB: ejb.NewSessionBean ejbName: NewSessionBean
2012-03-11 22:02:44,394 WARN [org.jboss.ejb3.interceptor.InterceptorInfoRepository] (WorkerThread#0[127.0.0.1:3125]) EJBTHREE-1852: InterceptorInfoRepository is deprecated
2012-03-11 22:02:44,418 INFO [org.jboss.ejb3.deployers.JBossASKernel] (WorkerThread#0[127.0.0.1:3125]) Created KernelDeployment for: SE2-ejb.jar
2012-03-11 22:02:44,425 INFO [org.jboss.ejb3.deployers.JBossASKernel] (WorkerThread#0[127.0.0.1:3125]) installing bean: jboss.j2ee:ear=SE2.ear,jar=SE2-ejb.jar,name=NewSessionBean,service=EJB3
2012-03-11 22:02:44,426 INFO [org.jboss.ejb3.deployers.JBossASKernel] (WorkerThread#0[127.0.0.1:3125]) with dependencies:
2012-03-11 22:02:44,426 INFO [org.jboss.ejb3.deployers.JBossASKernel] (WorkerThread#0[127.0.0.1:3125]) and demands:
2012-03-11 22:02:44,426 INFO [org.jboss.ejb3.deployers.JBossASKernel] (WorkerThread#0[127.0.0.1:3125]) jboss-switchboard:appName=SE2,module=SE2-ejb,name=NewSessionBean; Required: Create
2012-03-11 22:02:44,426 INFO [org.jboss.ejb3.deployers.JBossASKernel] (WorkerThread#0[127.0.0.1:3125]) jboss.ejb:service=EJBTimerService; Required: Described
2012-03-11 22:02:44,427 INFO [org.jboss.ejb3.deployers.JBossASKernel] (WorkerThread#0[127.0.0.1:3125]) and supplies:
2012-03-11 22:02:44,427 INFO [org.jboss.ejb3.deployers.JBossASKernel] (WorkerThread#0[127.0.0.1:3125]) Class:ejb.NewSessionBeanRemote
2012-03-11 22:02:44,427 INFO [org.jboss.ejb3.deployers.JBossASKernel] (WorkerThread#0[127.0.0.1:3125]) jndi:NewSessionBean
2012-03-11 22:02:44,427 INFO [org.jboss.ejb3.deployers.JBossASKernel] (WorkerThread#0[127.0.0.1:3125]) jndi:SE2/NewSessionBean/remote-ejb.NewSessionBeanRemote
2012-03-11 22:02:44,427 INFO [org.jboss.ejb3.deployers.JBossASKernel] (WorkerThread#0[127.0.0.1:3125]) jndi:SE2/NewSessionBean/remote
2012-03-11 22:02:44,428 INFO [org.jboss.ejb3.deployers.JBossASKernel] (WorkerThread#0[127.0.0.1:3125]) Added bean(jboss.j2ee:ear=SE2.ear,jar=SE2-ejb.jar,name=NewSessionBean,service=EJB3) to KernelDeployment of: SE2-ejb.jar
2012-03-11 22:02:44,466 INFO [org.jboss.ejb3.session.SessionSpecContainer] (WorkerThread#0[127.0.0.1:3125]) Starting jboss.j2ee:ear=SE2.ear,jar=SE2-ejb.jar,name=NewSessionBean,service=EJB3
2012-03-11 22:02:44,467 INFO [org.jboss.ejb3.EJBContainer] (WorkerThread#0[127.0.0.1:3125]) STARTED EJB: ejb.NewSessionBean ejbName: NewSessionBean
2012-03-11 22:02:44,475 INFO [org.jboss.ejb3.proxy.impl.jndiregistrar.JndiSessionRegistrarBase] (WorkerThread#0[127.0.0.1:3125]) Binding the following Entries in Global JNDI:

SE2/NewSessionBean/remote - EJB3.x Default Remote Business Interface
SE2/NewSessionBean/remote-ejb.NewSessionBeanRemote - EJB3.x Remote Business Interface

2012-03-11 22:02:44,477 WARN [org.jboss.ejb3.TimerServiceContainer] (WorkerThread#0[127.0.0.1:3125]) EJBTHREE-2193: using deprecated TimerServiceFactory for restoring timers
2012-03-11 22:02:44,484 INFO [org.jboss.jpa.deployment.PersistenceUnitDeployment] (WorkerThread#0[127.0.0.1:3125]) Starting persistence unit persistence.unit:unitName=SE2.ear/SE2-ejb.jar#wvp08heuPU
2012-03-11 22:02:44,529 INFO [org.jboss.web.tomcat.service.deployers.TomcatDeployment] (WorkerThread#0[127.0.0.1:3125]) deploy, ctxPath=/SE2-war

这是我的持久化单元及其上下文:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="wvp08heuPU" transaction-type="JTA">
<provider>oracle.toplink.essentials.PersistenceProvider</provider>
<jta-data-source>java:/MYSQL</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="toplink.ddl-generation" value="create-tables"/>
</properties>
</persistence-unit>
</persistence>

这是我的问题:查看我的数据库,我没有持久实体 - 下面的代码显示了我的实体:

包实体;

import java.io.Serializable;
import java.util.Calendar;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.UniqueConstraint;

@Entity
@Table(name="Account", uniqueConstraints=@UniqueConstraint(columnNames="email"))
public class Account implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int account_id;

private String email;
private String name;
@Temporal(javax.persistence.TemporalType.TIMESTAMP)
private Calendar dateCreated;
private int status;
private String password;
private String bio;
private String profilePictureURL;

//getters and setters
@Override
public int hashCode() {
int hash = 0;
hash += (int) account_id;
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 Account)) {
return false;
}
Account other = (Account) object;
if (this.account_id != other.account_id) {
return false;
}
return true;
}

@Override
public String toString() {
return "entities.Account[ id=" + account_id + " ]";
}

}

有什么想法吗?

编辑:

我的 session bean:

package ejb;

import entities.Account;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

@Stateless
public class NewSessionBean implements NewSessionBeanRemote {

@PersistenceContext(unitName = "wvp08heuPU")
private EntityManager em;

@Override
public void AddAccount(Account a){
em.persist(a);
}
}

解决方案:

主要问题是:我的持久层无法在数据库上创建表,因为没有该功能

为了像 Oscar 指出的那样解决我的实际问题,我将我的持久性提供程序更改为 Hibernate 2.0 - 这连同各种更改列表使我的 EJB 能够工作。

我遇到的一些问题您可能也希望解决:

  • ClassNotFound 异常 - 将持久性 .jar 文件移动到JBoss 6 服务器的服务器/默认目录

  • 无法转换类 - 使用 EclipseLink 和 JBoss 6 时似乎有一些兼容性问题,我无法让它工作;我不会费心去尝试。

  • 未找到 MYSQL - 确保您只有一个 mysql 连接器驱动程序不仅在您的 JBoss 库文件夹中而且还在 netbeans 中列出。您可以使用谷歌会告诉您的 SET claspath 默认设置剩下的。

最佳答案

entityManager.persist(account); 的调用在哪里?应该存在负责持久化实体的业务组件,无论是 session EJB 还是 POJO。

关于java - 未在数据库中创建的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9659379/

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