cześć,
potrzebuje wywołać metode z klasy CreateIBAN w klasie NewUser, a następnie przekazać ją i ustawić w CreateNewUser. Niestety mi nie wychodzi. Oczywiście później to wrzucić do bazy przez hibernate aby swobodnie te dane wyciągać w przyszłości. Dostaje komunikat:
Exception in thread "main" javax.persistence.PersistenceException: [PersistenceUnit: manager1] Unable to build Hibernate SessionFactory
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.persistenceException(EntityManagerFactoryBuilderImpl.java:967)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:892)
at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:58)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)
at domain.CreateNewUser.CN(CreateNewUser.java:39)
at domain.ATM.changer(ATM.java:28)
at domain.Main.main(Main.java:15)
Caused by: org.hibernate.MappingException: Could not determine type for: domain.CreateIBAN, at table: NewUser, for columns: [org.hibernate.mapping.Column(i)]
at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:455)
at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:422)
at org.hibernate.mapping.Property.isValid(Property.java:226)
at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:597)
at org.hibernate.mapping.RootClass.validate(RootClass.java:265)
at org.hibernate.boot.internal.MetadataImpl.validate(MetadataImpl.java:329)
at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:451)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:889)
... 6 more
Myślałem nawet to zrobić np relacją jednokierunkową jeden do jeden ale czy warto sobie robić tutaj na siłe zadanie? :D
package domain;
import java.util.Random;
public class CreateIBAN {
public void CIBAN() {
Random rand = new Random();
for(int i=0; i<9 ;i++)
{
int a = rand.nextInt(9);
System.out.print(a);
}
}
}
package domain;
import java.util.Scanner;
import javax.persistence.Entity;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class CreateNewUser {
public void CN() {
NewUser user = new NewUser();
System.out.println("Please enter name: ");
Scanner scannerName = new Scanner(System.in);
String SN = scannerName.nextLine();
System.out.println("Please enter surname: ");
Scanner scannerSurName = new Scanner(System.in);
String SSN = scannerSurName.nextLine();
System.out.println("Please enter pesel: ");
Scanner scannerPesel = new Scanner(System.in);
int Spe = scannerPesel.nextInt();
System.out.println("Please enter telephone: ");
Scanner scannerTelephoneNumber = new Scanner(System.in);
int STN = scannerTelephoneNumber.nextInt();
System.out.println("Please enter new PIN: ");
Scanner scannerPIN = new Scanner(System.in);
int SPIN = scannerPIN.nextInt();
EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("manager1");
EntityManager entityManager = entityManagerFactory.createEntityManager();
user.i.CIBAN(); /// :X ?
// czy może:
CreateIBAN i = null;
user.setI(i); /// :X ?
user.setName(SN);
user.setSurName(SSN);
user.setPesel(Spe);
user.setTelephoneNumber(STN);
user.setPin(SPIN);
entityManager.getTransaction().begin();
entityManager.persist(user);
entityManager.getTransaction().commit();
entityManager.close();
entityManagerFactory.close();
}
}
package domain;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class NewUser {
@Id
private long id;
private String name;
private String surName;
private int pesel;
private int telephoneNumber;
private int pin;
CreateIBAN i = new CreateIBAN();
public CreateIBAN getI() {
return i;
}
public void setI(CreateIBAN i) {
this.i = i;
}
public int getPin() {
return pin;
}
public void setPin(int pin) {
this.pin = pin;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSurName() {
return surName;
}
public void setSurName(String surName) {
this.surName = surName;
}
public int getPesel() {
return pesel;
}
public void setPesel(int pesel) {
this.pesel = pesel;
}
public int getTelephoneNumber() {
return telephoneNumber;
}
public void setTelephoneNumber(int telephoneNumber) {
this.telephoneNumber = telephoneNumber;
}
}
package domain;
public class Main {
public static void main(String[] args) {
ATM atm = new ATM();
atm.changer();
}
}