@SecondaryTable Problem

Acasta89

Mitglied
Hallo zuzsammen,

mein Problem kurz beschrieben:
Ich habe eine Entityklasse die mit einer Datenbanktabelle gemappt ist. Jetzt brauche ich für eine Ansicht im Frontend Daten aus einer anderen Tabelle.

Die Annotation @SecondaryTable war schnell gefunden. Problem ist aber, dass der resultierende INNER JOIN, den diese Annotation bietet bei jeder SQL Abfrage ausgeführt wird.

Dies habe ich an einer Exception gesehen, wo der INNER JOIN neben meiner WHERE Klausel ebenfalls ausgeführt wurde. Dabei hatte diese Abfrage nur Daten aus der Primary Table geholt. Deswegen komme ich zu dem entschluss, dass der INNER JOIN immer mitausgeführt wird.

Wie kann ich diese @SecondaryTable also besser unter Kontrolle bringen?
 

brauner1990

Bekanntes Mitglied
Ok...ich kann dir so leider nciht weiterhelfen, aber könntest du bitte Quelltext posten, dann ginge es vlt einfacher, dann ich rumprobieren mit meinen ideen
 

Acasta89

Mitglied
Java:
@Entity
@Table(name = "Employee")
@SecondaryTable(name = "Sales",
pkJoinColumns =
@PrimaryKeyJoinColumn(name = "fkEmployeeID"))
@NamedQueries(value = {
    @NamedQuery(name = "findByEmployeeNr",
    query = "select e.employeeNr, e.employeeName from Employee e where e.employeeNr = :eNr")
    @NamedQuery(name = "findByJoin",
    query = "select e.employeeNr, e.saleNr from Employeee")
})
public class Employee implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "EmployeeID")
    private String employeeID;
    @Column(name = "Number")
    private double employeeNr;
    @Column(name = "Name")
    private String employeeName;
    @Column(name = "Salenumber", table = "Sales")
    private double saleNr;

    public Employee() {
    }

    public Employee(String employeeID) {
        this.employeeID= employeeID;
    }

    public String getEmployeeID() {
        return employeeID;
    }

    public void setEmployeeID(String employeeID) {
        this.employeeID= employeeID;
    }

    public Double getEmployeeNr() {
        return employeeNr;
    }

    public void setEmployeeNr(Double employeeNr) {
        this.employeeNr= employeeNr;
    }
    public String getEmployeeName() {
        return employeeName;
    }

    public void setEmployeeName(String employeeName) {
        this.employeeName= employeeName;
    }
    public Double getSaleNr() {
        return saleNr;
    }

    public void setSaleNr(Double saleNr) {
        this.saleNr= saleNr;
    }
 

brauner1990

Bekanntes Mitglied
Ich glaube du bist übers Ziel geschossen. Wenn es nur eine Datenhaltung ist für "wer hat welchen verkauf getätigt", dann reicht doch eine
Code:
OneToMany
und wenn du auch die Artikel sowie den Kunden zu dem Verkauf speichern willst, dann machste halt
Code:
ManyToMany
, prompt biste fein raus.
 

Acasta89

Mitglied
Joa, Problem an der Geschichte ist, dass dies ein Produktionssystem (ich habe dies natürlich etwas vereinfacht) meines Unternehmens ist und ich an der Datenbank nichts ändern darf.

Ich muss Daten aus Employee und Sales an die JSF Oberfäche bekommen. Mittlerweile habe ich das Problem mit einer Doppel-SQL-Abfrage gelöst. Denn in der Tabelle Sales steht der fkEmployee. Den brauche ich erstmal um eine Range von Datensäzen an die Oberfläche zu bekommen.

Der Benutzer gibt im Frontend die Mitarbeiternummer ein (ist ja nicht gleich die ID). Die Nummer steht jedoch nicht in der Sales-Tabelle. Ich habe also erstmal eine SQL1 (ich gebe die Nummer als Paramter vor und bekomme die ID dazu zurück) und einmal eine SQL2 (mit der ID hole ich mir Datensätze die diese fkID in der Sales Tabelle haben). Sauber ist das aber nicht, oder?

Hoffe ich habe das Problem nun etwas näher beleuchtet.
 

brauner1990

Bekanntes Mitglied
Ja ich bin davon ausgegangen das du nicht nur ne Fassade machst, ok, dann ist das wirklich nciht die beste Lösung, aber ich wüsste jetzt nicht wie besser. Da Musste ja wirklich die Klassen aus der DB heraus erstellen, Netbeans hat soweit ich weiß dafür nen Wizard, aber wie das bei deiner IDE aussieht, ...ka
 

Acasta89

Mitglied
Trotzdem danke für deine Hilfe bisher. Ich benutze sogar Netbeans und habe auch per Wizard meine Entityklassen erstellt.

Dennoch habe ich das ganze Verfahren mit dieser @SecondaryTable noch nicht so ganz durchblickt. Sobald ich etwas neues herausfinde, melde ich mich nochmal.
 
M

maki

Gast
IMHO ist @SecondaryTable falsch für das was du möchtest, du möchtest eigentlich eine Relation darstellen, @OneToMany.

Sehe nicht wieso du deshalb das Schema ändern müsstest, aber diese Infos haben wir hier ja nicht ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Problem beim initialisieren des Caches Data Tier 0
S JPA Problem mit Cascading Data Tier 1
M Eclipse 4 RCP Hibernate Problem Data Tier 3
C JPA FetchType.LAZY, Relation @OneToMany und Problem mit dem update Data Tier 1
K Problem mit EJBs und Transaktionen Data Tier 0
G JPA: Entity Klasse @JoinColumns Problem Data Tier 2
M JPA Problem: java.sql.SQLSyntaxErrorException: Data Tier 7
H Hibernate Problem mit Lazy Loading bei @OneToMany Collections Data Tier 5
M MySql und JPA-Timestamp Problem Data Tier 8
J Hibernate Problem bei Master-Detail-Tabellen Data Tier 5
A JPA - ManyToMany Problem - keine Unique Mehrfachzuweisungen Data Tier 4
M Problem beim Laden von Objekten, die von anderen Applikationen in eine DB eingefügt wurden Data Tier 5
M Problem mit @Temporal Mapping und SQL Server Data Tier 3
P JPA - HashMap mit Many-to-Many Relation Problem Data Tier 4
B Problem mit @ManyToMany und CascadeType.ALL Data Tier 3
Blackskyliner [JPA][Anfänger] Problem mit Wertzuweisung aus Verbundtabelle Data Tier 2
B Problem mit org.hibernate.LazyInitializationException Data Tier 11
B DatenquellenUpdater extends Thread - Problem mit PermGenSpace Data Tier 5
S Problem beim Insert mit Hibernate Data Tier 9
Y [openJPA] Problem mit Transaktion? Data Tier 2
N Problem beim session.flush(); Data Tier 17
Y Postgres und JPA - Primärschlüssel Problem Data Tier 3
P SQL PRoblem Hibernate? Data Tier 8
Y EJB Problem mit Transaktionen Data Tier 7
M Transaction / Session Problem Data Tier 4
G JPA 2.0 Query Problem Data Tier 3
P CORBA Problem bei EJB 3.0 Anwendung in Glassfish v3 Data Tier 7
F Problem mit Hibernate Schema Update Data Tier 2
S Lazy loading Problem Data Tier 2
M Insert-Problem mit JPA/Hibernate Data Tier 4
megachucky JPA - Problem mit Persistence Unit / Context Data Tier 1
H Hibernate Problem Data Tier 4
D Performance Problem mit Prepared Statement Data Tier 6
T Problem mit openJPA Data Tier 7
P Problem mit Data Tier 9
GilbertGrape Cascade Problem (Hibernate) Data Tier 3
C JPA Problem mit attributeOverride und mehrspaltigem PK Data Tier 2
B select "neu" statement Problem (jpql) Data Tier 8
boxi Hibernate Lazy Loading Problem Data Tier 2
M Problem mit Hibernate und SLF4J - NoSuchMethodException Data Tier 3
G Connection Problem - WAS 6.1, Hibernate, OS Authentication Data Tier 1
K Hibernate update-Problem Data Tier 36
J hibernate problem Data Tier 14
N Hibernate - Problem mit Update/Insert Data Tier 4
B Problem mit @PersistenceContext Data Tier 4
G Problem with mapped of the tables at one to one relationship Data Tier 8

Ähnliche Java Themen

Neue Themen


Oben