Hibernate Maven Project - creating bazy - error.

0

Witam, tworzę projekt "Menadżer zadań"
zaimplementowałem potrzebne mi tabele i wybija mi błąd podczas ich tworzenia w mySQL.

 kwi 08, 2015 9:12:35 PM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {4.3.8.Final}
kwi 08, 2015 9:12:35 PM org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
kwi 08, 2015 9:12:35 PM org.hibernate.cfg.Environment buildBytecodeProvider
INFO: HHH000021: Bytecode provider name : javassist
kwi 08, 2015 9:12:35 PM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {4.0.5.Final}
kwi 08, 2015 9:12:35 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
WARN: HHH000402: Using Hibernate built-in connection pool (not for production use!)
kwi 08, 2015 9:12:35 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH000401: using driver [com.mysql.jdbc.Driver] at URL [jdbc:mysql://localhost:3306/mojabaza]
kwi 08, 2015 9:12:35 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH000046: Connection properties: {user=admin, password=****}
kwi 08, 2015 9:12:35 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH000006: Autocommit mode: false
kwi 08, 2015 9:12:35 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000115: Hibernate connection pool size: 20 (min=1)
kwi 08, 2015 9:12:35 PM org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQL5Dialect
Exception in thread "main" javax.persistence.PersistenceException: [PersistenceUnit: myDataBase] Unable to build Hibernate SessionFactory
	at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.persistenceException(EntityManagerFactoryBuilderImpl.java:1239)
	at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.access$600(EntityManagerFactoryBuilderImpl.java:120)
	at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:855)
	at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:845)
	at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.java:398)
	at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:844)
	at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:75)
	at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:54)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)
	at taskmanager.ConnectionDB.<init>(ConnectionDB.java:10)
	at taskmanager.Main.main(Main.java:8)
Caused by: org.hibernate.AnnotationException: @Temporal should only be set on a java.util.Date or java.util.Calendar property: domain.Task.Deadline
	at org.hibernate.cfg.annotations.SimpleValueBinder.setType(SimpleValueBinder.java:179)
	at org.hibernate.cfg.annotations.PropertyBinder.makePropertyAndValue(PropertyBinder.java:195)
	at org.hibernate.cfg.annotations.PropertyBinder.makePropertyValueAndBind(PropertyBinder.java:216)
	at org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:2241)
	at org.hibernate.cfg.AnnotationBinder.processIdPropertiesIfNotAlready(AnnotationBinder.java:963)
	at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:796)
	at org.hibernate.cfg.Configuration$MetadataSourceQueue.processAnnotatedClassesQueue(Configuration.java:3845)
	at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3799)
	at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1412)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1846)
	at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:852)
	... 9 more 

Domyślam się że problem leży w mainie, ale nie koniecznie, kod main:

package taskmanager;


public class Main {

	public static void main(String[] args) {

		ConnectionDB con = new ConnectionDB();
		con.getEntityManager().getEntityManagerFactory();

	}
}

Czy mógłby ktoś pomóc?

1

Cytując klasyka: Matka wie że ćpiesz? Co to za domyślanie? WTF? Przecież masz log błędu.

Caused by: org.hibernate.AnnotationException: @Temporal should only be set on a java.util.Date or java.util.Calendar property: domain.Task.Deadline
Tłumacząc na języ polski: w klasie Task w pakiecie domain masz pole Deadline oznaczone przez @Temporal i jednocześnie nie jest to ani Date ani Calendar a tak nie wolno.

0

Nie umiem z tego odczytać :D

0

pokaż definicje domain.Task.Deadline
i mappingi

0

Dzięki zaraz sprawdzę

1

stack trace czytaj od dołu, podejrzewam, że chodzi o

Caused by: org.hibernate.AnnotationException: @Temporal should only be set on a java.util.Date or java.util.Calendar property: domain.Task.Deadline

Czyli adnotację @TeMPOraL w obiekcie domain.Task.Deadline - możesz jej użyć tylko nad polem typu java.util.Date lub java.util.Calendar

0
package domain;

import java.sql.Date;
import java.util.List;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

@Entity
public class Task {
	@Id
	@GeneratedValue
	private long IdTask;
	@NotNull
	@Size(min = 3, max = 30)
	private String Title;
	@NotNull
	@Size(max = 255)
	private String Description;
	@Temporal(TemporalType.DATE)
	private java.sql.Date Deadline;
	@Temporal(TemporalType.DATE)
	private java.sql.Date startDate;
	@ManyToOne
	@JoinColumn(name = "idProject")
	private Project project;
	@ManyToMany
	private List<User> UsersList;

	/**
	 * @param idTask
	 * @param title
	 * @param description
	 * @param deadline
	 * @param startDate
	 * @param project
	 * @param usersList
	 */
	public Task(long idTask, String title, String description, Date deadline,
			Date startDate, Project project, List<User> usersList) {
		super();
		IdTask = idTask;
		Title = title;
		Description = description;
		Deadline = deadline;
		this.startDate = startDate;
		this.project = project;
		UsersList = usersList;
	}

	public long getIdTask() {
		return IdTask;
	}

	public void setIdTask(long idTask) {
		IdTask = idTask;
	}

	public String getTitle() {
		return Title;
	}

	public void setTitle(String title) {
		Title = title;
	}

	public String getDescription() {
		return Description;
	}

	public void setDescription(String description) {
		Description = description;
	}

	public java.sql.Date getDeadline() {
		return Deadline;
	}

	public void setDeadline(java.sql.Date deadline) {
		Deadline = deadline;
	}

	public java.sql.Date getStartDate() {
		return startDate;
	}

	public void setStartDate(java.sql.Date startDate) {
		this.startDate = startDate;
	}

	public Project getProject() {
		return project;
	}

	public void setProject(Project project) {
		this.project = project;
	}

	public List<User> getUsersList() {
		return UsersList;
	}

	public void setUsersList(List<User> usersList) {
		UsersList = usersList;
	}

}
0

Jednego błędu się pozbyłem z waszą pomocą to drugi wyszedł:

Exception in thread "main" javax.persistence.PersistenceException: Unable to build entity manager factory
	at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:83)
	at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:54)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)
	at taskmanager.ConnectionDB.<init>(ConnectionDB.java:10)
	at taskmanager.Main.main(Main.java:8)
Caused by: org.hibernate.cfg.beanvalidation.IntegrationException: Error activating Bean Validation integration
	at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.integrate(BeanValidationIntegrator.java:154)
	at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:312)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1859)
	at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:852)
	at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:845)
	at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.java:398)
	at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:844)
	at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:75)
	... 5 more
Caused by: java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
	at org.hibernate.validator.util.LoggerFactory.make(LoggerFactory.java:29)
	at org.hibernate.validator.util.Version.<clinit>(Version.java:30)
	at org.hibernate.validator.engine.ConfigurationImpl.<clinit>(ConfigurationImpl.java:52)
	at org.hibernate.validator.HibernateValidator.createGenericConfiguration(HibernateValidator.java:43)
	at javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:269)
	at javax.validation.Validation.buildDefaultValidatorFactory(Validation.java:111)
	at org.hibernate.cfg.beanvalidation.TypeSafeActivator.getValidatorFactory(TypeSafeActivator.java:459)
	at org.hibernate.cfg.beanvalidation.TypeSafeActivator.activate(TypeSafeActivator.java:97)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.integrate(BeanValidationIntegrator.java:148)
	... 12 more
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	... 25 more
2
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory

a dodaną masz w mavenie zaleznosc?

<dependency>
	<groupId>org.slf4j</groupId>
	<artifactId>slf4j-simple</artifactId>
	<version>1.7.12</version>
</dependency>

w pomie powinno zalatwic sprawe

0

Dziękuję ślicznie :) Gra gittarra, piwo stawiam :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1