Hibernate Oracle Problem

guy inkognito

Grünschnabel
Hallo,

Ich habe ein etwas mysteriöses Problem und komme nicht mehr weiter. Meine Anwendung besteht aus einem Jboss Application Server auf dem meine EJBs laufen. Eine Clientanwendung greift auf diese Beans zu, zeigt die Daten an und bietet die Möglichkeit diese Daten zu editieren und zu speichern. Diese ganzen Vorgänge funktionieren tadellos.

Nun zu meinem Problem. Die zuvor beschriebenen Funktionen arbeiten perfekt wenn ich die Daten von Hand in meine Oracle 10 Datenbank eingebe. Wenn die Daten jedoch im Programm eingegeben werden und dann über die Beans per Hibernate als neuer Datensatz angelegt werden, kann ich nur die erste Tabelle auslesen. Versuche ich Tabellen, die über FKs verbunden sind auszulesen kann Hibernate sie schlicht und einfach nicht finden.

D.H. werden Tabellen über das Programm gespeichert, dann können referenzierte Tabellen nicht gelesen werden. Wenn ich identische Datensätze per SQLPLUS eintrage ( mit allen FKs) dann funktioniert es. Die FKs werden vom Programm übrigens richtig angelegt.

Ich hoffe jemand kann mir einen Schubs in die richtige Richtung geben.
Danke im Voraus.
 
Hallo,

hier die relevanten Teile der Mapping Dateien. Ich bin nicht sicher ob man eine OneToOne Beziehung so mappen kann. Allerdings muss ich von einer Campaign aus auf den CampaignContext zugreifen können. Das ganze muss aber auch in der entegegengesetzten Richtung funktionieren.


CampaignContext:
Code:
@Entity
@Table(name = "CAMPAIGN_CONTEXT")
@SequenceGenerator(name = "campaign_context_sequence", sequenceName = "campaign_context_sequence")
@NamedQueries({@NamedQuery(name = "CampaignContext.findByCampaignContextId", query = "SELECT c FROM CampaignContext c WHERE c.campaignContextId = :campaignContextId"), @NamedQuery(name = "CampaignContext.findByCampaignName", query = "SELECT c FROM CampaignContext c WHERE c.campaignName = :campaignName"), @NamedQuery(name = "CampaignContext.findByBrandName", query = "SELECT c FROM CampaignContext c WHERE c.brandName = :brandName"), @NamedQuery(name = "CampaignContext.findByActive", query = "SELECT c FROM CampaignContext c WHERE c.active = :active"), @NamedQuery(name = "CampaignContext.findByDescription", query = "SELECT c FROM CampaignContext c WHERE c.description = :description")})
public class CampaignContext implements Serializable {
    @Id
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator = "campaign_context_sequence")
    @Column(name = "CAMPAIGN_CONTEXT_ID", nullable = false)
    private Integer campaignContextId;
    @Column(name = "CAMPAIGN_NAME")
    private String campaignName;
    @Column(name = "BRAND_NAME")
    private String brandName;
    @Column(name = "ACTIVE")
    private Short active;
    @Column(name = "DESCRIPTION")
    private String description;
    @Column(name = "MARKET_ID")
    private Integer marketId;
    @JoinColumn(name = "CUSTOMER_ID", referencedColumnName = "CUSTOMER_ID")
    @ManyToOne
    private Customer customerId;
    @OneToOne(cascade={CascadeType.REMOVE})
    @JoinColumn(name="CAMPAIGN_ID", referencedColumnName = "CAMPAIGN_ID")
    private Campaign campaign;

Campaign:
Code:
@Entity
@Table(name = "CAMPAIGN")
@SequenceGenerator(name = "campaign_sequence", sequenceName = "campaign_sequence")
@NamedQueries({@NamedQuery(name = "Campaign.findByCampaignId", query = "SELECT c FROM Campaign c WHERE c.campaignId = :campaignId"), @NamedQuery(name = "Campaign.findByCampaignName", query = "SELECT c FROM Campaign c WHERE c.campaignName = :campaignName"), @NamedQuery(name = "Campaign.findByCampaignType", query = "SELECT c FROM Campaign c WHERE c.campaignType = :campaignType"), @NamedQuery(name = "Campaign.findBySummaryFlag", query = "SELECT c FROM Campaign c WHERE c.summaryFlag = :summaryFlag"), @NamedQuery(name = "Campaign.findByStartDate", query = "SELECT c FROM Campaign c WHERE c.startDate = :startDate"), @NamedQuery(name = "Campaign.findByEndDate", query = "SELECT c FROM Campaign c WHERE c.endDate = :endDate"), @NamedQuery(name = "Campaign.findByExternalId", query = "SELECT c FROM Campaign c WHERE c.externalId = :externalId"), @NamedQuery(name = "Campaign.findByUsername", query = "SELECT c FROM Campaign c WHERE c.username = :username"), @NamedQuery(name = "Campaign.findByPassword", query = "SELECT c FROM Campaign c WHERE c.password = :password"), @NamedQuery(name = "Campaign.findByService", query = "SELECT c FROM Campaign c WHERE c.service = :service"), @NamedQuery(name = "Campaign.findByDescription", query = "SELECT c FROM Campaign c WHERE c.description = :description")})
public class Campaign implements Serializable {
    @Id
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator = "campaign_sequence")
    @Column(name = "CAMPAIGN_ID", nullable = false)
    private Integer campaignId;
    @Column(name = "CAMPAIGN_NAME")
    private String campaignName;
    @Column(name = "CAMPAIGN_TYPE")
    private String campaignType;
    @Column(name = "SUMMARY_FLAG")
    private String summaryFlag;
    @Column(name = "START_DATE")
    @Temporal(TemporalType.DATE)
    private Date startDate;
    @Column(name = "END_DATE")
    @Temporal(TemporalType.DATE)
    private Date endDate;
    @Column(name = "EXTERNAL_ID")
    private BigInteger externalId;
    @Column(name = "USERNAME")
    private String username;
    @Column(name = "PASSWORD")
    private String password;
    @Column(name = "SERVICE")
    private String service;
    @Column(name = "DESCRIPTION")
    private String description;
    @OneToOne(cascade={CascadeType.ALL})
    @JoinColumn(name="SCHEDULER_ID", referencedColumnName = "SCHEDULER_ID")
    private Scheduler scheduler;
    @OneToOne(cascade={CascadeType.ALL})
    @JoinColumn(name="CAMPAIGN_ID", referencedColumnName = "CAMPAIGN_ID")
    private CampaignContext campaignContext;

Hierbei tritt das Problem auf, dass ich ein Campaign Objekt habe und den zugehörigen CampaignContext haben möchte. Die Get - Methode gibt allerdings den Wert NULL zurück.

Danke für die schnelle Antwort und die weitere Hilfe.
 
Zuletzt bearbeitet:
Zurück