Oracle The parameter name [...] in the query's selection criteria does not match any parameter name d

fredwak

Mitglied
Hallo liebe gemeinde,

ich habe folgendes Problem:

Derzeit bin ich an der Entwicklung eines Java Servers auf welchen von unterschiedlichsten Clients zugegriffen wird.
Mein Server ist ein Glassfish 3.1.1 server.
Auf die Datenbank greif ich via. EclipseLink (JPA) zu.

Ich habe eine Klasse (TodoBE.java) welche EIN Todo beinhaltet.
Ebenfalls beinhaltet dieses Todo ein Projekt (ProjectBE.java)
Ebenfalls ein Status und einen Users (Hier funktioniert alles)

Das ProjectBE beinhaltet auch einen User und eine Liste, etc. (unwichtig)

Mein Problem ist es, wenn ich das Todo nun mit dem EntityManager mergen möchte, klappt das nicht und er wirft mir folgende Exception:

Java:
Exception Description: The parameter name [projectid] in the query's selection criteria does not match any parameter name defined in the query.
Query: ReadAllQuery(name="file:/C:/JDEV/gf31/glassfish/domains/FirstWebApp/eclipseApps/Deployment/TodoServer_jar/_JPA_TUT" referenceClass=UserBE sql="SELECT t1.userid, t1.admin, t1.firstname, t1.lastname, t1.mail, t1.password, t1.username FROM project_user t0, users t1 WHERE ((t0.projectId = ?) AND (t1.userid = t0.userId))")

meine Klassen sehen so aus:

TodoBE:
Java:
@Entity
@Table(name = "todos")
@SequenceGenerator(name="todoIdGenerator", sequenceName="SQ_id", allocationSize=1)
public class TodoBE implements Serializable, ObjectBE {

	@OneToOne
	@JoinColumns({
		@JoinColumn(name="projectId", referencedColumnName="PROJECTID")
	})
	private ProjectBE project;

ProjectBE:
Java:
@Entity
@Table(name = "projects")
@SequenceGenerator(sequenceName="SQ_id", name = "projectIdGenerator", allocationSize=1)
public class ProjectBE implements Serializable, ObjectBE {

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY, generator="projectIdGenerator")
	@Column(name = "projectid")
	private Integer projectid;

Die Fehlermeldung ist ja eigentlich eindeutig, allerdings funktioniert alles andere auch, bis auf dieses Thema hier.

wäre super wenn ihr mir helfen könntet :applaus:

Liebe Grüße
Freddy
 
ich denke mal es liegt daran:

name = projectId

[XML]
@JoinColumns({
@JoinColumn(name="projectId", referencedColumnName="PROJECTID")
})
[/XML]


name = projectid
[XML]
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY, generator="projectIdGenerator")
@Column(name = "projectid")
private Integer projectid;[/XML]


projectId != projectid
 
danke für die antwort !:toll:

ich habe das problem mehr oder weniger lösen können.

folgendes wurde ausgeführt:
ich habe versucht ein neues Object in die DB zu schreiben. mit MERGE.

Ein Arbeitskollege sagte mir dann das man merge nur zum UPDATEN von Datensätzen benutzen soll.
Zum Einfügen von neuen Datensätzen ist PERSIT besser.

Liebe Grüße
 

Zurück
Oben