I am using JPA 2.1 in Netbeans to create my entity. If my database has no table then it should create table from entities.
When I deploy and run my enterprise application, the userEntity table does not appear in my mySQL database.
Any help here? :)
Below are my codes.
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="CommonInfrastructure-ejbPU" transaction-type="JTA">
<jta-data-source>jdbc/commonInfraDatasource</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="javax.persistence.schema-generation.database.action" value="create"/>
</properties>
</persistence-unit>
</persistence>
userEntity.java
package entity;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class userEntity implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long systemUserId;
private String userName;
private String password;
private String email;
private int activateStatus;
private String accessGroup;
private int lockOutStatus;
@Override
public int hashCode() {
int hash = 0;
hash += (getSystemUserId() != null ? getSystemUserId().hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the systemUserId fields are not set
if (!(object instanceof userEntity)) {
return false;
}
userEntity other = (userEntity) object;
if ((this.getSystemUserId() == null && other.getSystemUserId() != null) || (this.getSystemUserId() != null && !this.systemUserId.equals(other.systemUserId))) {
return false;
}
return true;
}
@Override
public String toString() {
return "entity.userEntity[id=" + getSystemUserId() + "]";
}
/**
* @return the systemUserId
*/
public Long getSystemUserId() {
return systemUserId;
}
/**
* @param systemUserId the systemUserId to set
*/
public void setSystemUserId(Long systemUserId) {
this.systemUserId = systemUserId;
}
/**
* @return the userName
*/
public String getUserName() {
return userName;
}
/**
* @param userName the userName to set
*/
public void setUserName(String userName) {
this.userName = userName;
}
/**
* @return the password
*/
public String getPassword() {
return password;
}
/**
* @param password the password to set
*/
public void setPassword(String password) {
this.password = password;
}
/**
* @return the email
*/
public String getEmail() {
return email;
}
/**
* @param email the email to set
*/
public void setEmail(String email) {
this.email = email;
}
/**
* @return the activateStatus
*/
public int getActivateStatus() {
return activateStatus;
}
/**
* @param activateStatus the activateStatus to set
*/
public void setActivateStatus(int activateStatus) {
this.activateStatus = activateStatus;
}
/**
* @return the accessGroup
*/
public String getAccessGroup() {
return accessGroup;
}
/**
* @param accessGroup the accessGroup to set
*/
public void setAccessGroup(String accessGroup) {
this.accessGroup = accessGroup;
}
/**
* @return the lockOutStatus
*/
public int getLockOutStatus() {
return lockOutStatus;
}
/**
* @param lockOutStatus the lockOutStatus to set
*/
public void setLockOutStatus(int lockOutStatus) {
this.lockOutStatus = lockOutStatus;
}
}
sun-resources.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE resources PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 Resource Definitions //EN" "http://www.sun.com/software/appserver/dtds/sun-resources_1_3.dtd">
<resources>
<jdbc-resource enabled="true" jndi-name="jdbc/commonInfraDatasource" object-type="user" pool-name="CommonInfraConnectionPool">
<description/>
</jdbc-resource>
<jdbc-connection-pool allow-non-component-callers="false" associate-with-thread="false" connection-creation-retry-attempts="0" connection-creation-retry-interval-in-seconds="10" connection-leak-reclaim="false" connection-leak-timeout-in-seconds="0" connection-validation-method="auto-commit" datasource-classname="com.mysql.jdbc.jdbc2.optional.MysqlDataSource" fail-all-connections="false" idle-timeout-in-seconds="300" is-connection-validation-required="false" is-isolation-level-guaranteed="true" lazy-connection-association="false" lazy-connection-enlistment="false" match-connections="false" max-connection-usage-count="0" max-pool-size="32" max-wait-time-in-millis="60000" name="CommonInfraConnectionPool" non-transactional-connections="false" pool-resize-quantity="2" res-type="javax.sql.DataSource" statement-timeout-in-seconds="-1" steady-pool-size="8" validate-atmost-once-period-in-seconds="0" wrap-jdbc-objects="false">
<property name="URL" value="jdbc:XXXXXXXXXX"/>
<property name="User" value="XXXXXXXXX"/>
<property name="Password" value="XXXXXXXXX"/>
</jdbc-connection-pool>
</resources>
Additional Information I start up my Glassfish Server and right click and deploy my enterprise application. This should create the userEntity table in my database right? However,it did not.
to force EclipseLink to create tables during deployment time, add:
<property name="eclipselink.deploy-on-startup" value="true" />
to your persistence.xml. By default, tables are being created when needed, usually on first access to EMF from the application. This behavior is defined in section 9.4 of the JPA 2.1 spec.