JPA EntityManager und persist() (Java EE 6)

I

Infohm

Gast
Hallo liebe Java-Community,

Ich arbeite im Team mit ein paar Kommilitonen an einem Projekt mit Java EE 6, Glassfish 3 und MySql 5.5. Meine Zuständigkeit innerhalb des Teams beschränkt sich auf die Datenbank, welche inzwischen auch größtenteils funktionsfähig ist. Allerdings bereitet mit eine Entity Kopfzerbrechen.

Java:
@Entity
@Table(name="menu")
public class MenuEntity {

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Column(name = "menuId", unique = true, nullable = false)
	private long id;
	
	@Column(name="day", nullable = false)
	@Temporal(TemporalType.DATE) 
	private Date day;
	
	@ManyToOne (fetch=FetchType.LAZY)
	@JoinColumn(name="sourceId", nullable = false)
	private SourceEntity source;
	
	@OneToMany
	@JoinColumn(name="menu", referencedColumnName="menuId", nullable = true)
	private List<MealEntity> meal;

        //... (Getter,Setter, equal Override)

Diese Entity lässt sich aus irgendeinem Grund nicht in die Datenbank eintragen. Ich poste mal eben noch die create Funktion aus der EAO.

Java:
	@PersistenceContext(unitName = "is")
	private EntityManager em;
	
	private final static Logger LOGGER = Logger.getLogger(MenuEAOBean.class .getName());
	
	@EJB
	private MealEAOBean mealEAO;
	
	@EJB
	private SourceEAOBean sourceEAO;

	public long createMenu(Date day, long sourceId){
		try{
			LOGGER.info("Attempting to create Menu:\nDay: "+day.toString()+"\nSource: "+sourceId);
			SourceEntity source = sourceEAO.getSourceById(sourceId);
			if(source == null){
				LOGGER.severe("Creating Menu FAILED. Couldn't find related source "+sourceId);
				return -1;
			}
			if(checkMenuExists(day, source)){
				LOGGER.severe("Creating menu FAILED. There's already a menu existing with:\nDay: "+day.toString()+" AND Source "+source.getId());
				return -1;
			}
			
			MenuEntity m = new MenuEntity();
			m.setDay(day);
			m.setSource(source);
			
			em.persist(m);
			em.flush();
			
			LOGGER.info("Menu "+m.getId()+" SUCCESSFULLY created");
			return m.getId();
		}catch(Exception e){
			LOGGER.severe(e.toString()+" function createMenu().");
			return -1;
		}
	}

Bei Aufruf der createMenu-Methode. Wird die Entity korrekt befüllt und ihr wird eine ID zugewiesen. (Beides hab ich über die Logfile des Servers getestet) ALLERDINGS landet kein Eintrag in der Datenbank, obwohl ich hier eigentlich nichts anderes mache als bei allen anderen Entities bei denen es funktioniert. Es landet auch keine Exception im Logfile.

Bereits probiert hab ich:
- Date auszukommentieren und das menu nur anhand einer source zu erstellen.
- Source aszukommentieren und das menu nur anhand eines dates zu erstellen.
- Alle nullables auf true zu stellen (natürlich sowohl in der Entity als auch in der DB)

Wenn jemand eine Idee hat was ich falsch mache (gerne auch abgesehen von meinem "Persist-Problem") würd ich mich tierisch freuen :)

LG
Infohm
 
N

nillehammer

Gast
Irgendwie fehlt mir bei Deiner createMenu-Methode der Transaktionskontext, speziell der Commit. Ich kenne mich mit EJB nicht so aus. Kann sein, dass das vom Container implizit gemacht wird, aber falls nicht, müsste in den Code noch irgendwie ein commit() rein.
 
A

Andgalf

Gast
Irgendwie fehlt mir bei Deiner createMenu-Methode der Transaktionskontext, speziell der Commit. Ich kenne mich mit EJB nicht so aus. Kann sein, dass das vom Container implizit gemacht wird, aber falls nicht, müsste in den Code noch irgendwie ein commit() rein.

Das Transaktionshandling macht der Container bei EJBs implizit, sofern es nicht anders konfiguriert wurde.
 
I

Infohm

Gast
Erstmal danke für eure Antworten. :)

Irgendwie fehlt mir bei Deiner createMenu-Methode der Transaktionskontext, speziell der Commit. Ich kenne mich mit EJB nicht so aus. Kann sein, dass das vom Container implizit gemacht wird, aber falls nicht, müsste in den Code noch irgendwie ein commit() rein.

Also in anderen EAOs unseres Servers funktioniert es analog einwandfrei.

ich kann auch noch mehr Informationen posten wie DB-Aufbau, Relationsmodell, usw. wenn das irgendwie hilft, ich wollte nur den OP nicht noch unübersichtlicher machen.
 

EasyEagle

Aktives Mitglied
Hi Infohm,

ich bin mir nicht ganz sicher (ist schon ne Weile her), aber ich kenn die OneToMany Annotation so:

Java:
@OneToMany(mappedBy="menuId")
private List<MealEntity> meal;

Vielleicht kann hier die Verknüpfung nicht hergestellt werden.
lg
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M JPA EntityManager ist null Data Tier 2
Rudolf Mein EntityManager oder EntityManagerFactory liefern ständig null zurück Data Tier 8
E Hibernate: Session vs EntityManager Data Tier 3
J EntityManager Data Tier 2
D JPA vs Hibernate.cfg und Entitymanager Data Tier 6
A No Persistence provider for EntityManager named Data Tier 4
S [Hibernate] No Persistence provider for EntityManager Data Tier 5
J EclipseLink EntityManager Data Tier 4
G EntityManager find Data Tier 5
T injizierter EntityManager (Seam) null Data Tier 2
K No Persistence provider for EntityManager named Data Tier 4
D wie umgehen mit Ressource EntityManager und E-M-Factory Data Tier 12
D legacy db mit lustigen Spaltennamen per EntityManager find laden Data Tier 4
H Injected EntityManager und EntityManagerFactory ist null Data Tier 5
S OneToOne Beziehung erzeugt not marked cascade PERSIST Data Tier 1
M JSF java.sql.SQLIntegrityConstraintViolationException nach zweitem persist Data Tier 6
B JPA Persist: DB-Tabelle wird überschrieben Data Tier 2
Landei JPA - persist persisted nicht Data Tier 4
S (JPA) id nach persist immer 0 Data Tier 3
B JPA Persist Data Tier 4
Final_Striker EJB3: Entity nach persist wiederfinden Data Tier 8
N EJBException von EManager.persist abfangen u. verarbeiten Data Tier 13
L JSP Mit Java-Daten von einer Webseite zu ziehen? Data Tier 5
E Wie kann ich über einen Suchfeld in Java Server Pages nach Datenbankinhalten suchen? Data Tier 1
Kenan89 9.2-1000 JDBC 4 nicht für Java EE ? Data Tier 3
M Exception in thread "main" org.hibernate.MappingException: java.lang.ClassNotFoundException: Message Data Tier 4
M JPA Problem: java.sql.SQLSyntaxErrorException: Data Tier 7
S Datenbanktool für JAVA DB. Data Tier 10
C [Hibernate] Generierung von hbm.xml to Java Data Tier 4
H Java EE 5 + Glassfish 3 + Hibernate: Wie geht das genau? Data Tier 2
P Java und HSQL verbindung herstellen Data Tier 18
S OpenJPA mit einem Java-SE-Projekt benutzen Data Tier 5
J MappingException:Could not determine type for: java.util.Set Data Tier 5
byte Preload Pattern aus Java Magazin 4/08 fehlerhaft Data Tier 9
N java.sql.SQLException: Error in allocating a connection. Cau Data Tier 5
V [Hibernate] java.lang.NoClassDefFoundError Data Tier 6

Ähnliche Java Themen

Neue Themen


Oben