2012-07-30 18 views
25

eşanlamlısı nedir? Ya da daha ziyade neyle eşleşmeli?@OneToMany mappedBy ile eşleştirilenler @ 0_

@OneToManydocs uyarınca @EntityFoo için haritalar aşağıda headers alan? Ve Foojavax.mail.Header için bir sarıcı olur mu? Burada

package net.bounceme.dur.usenet.model; 

import java.io.Serializable; 
import java.util.ArrayList; 
import java.util.List; 
import java.util.logging.Level; 
import java.util.logging.Logger; 
import javax.mail.Header; 
import javax.mail.Message; 
import javax.mail.MessagingException; 
import javax.persistence.*; 

@Entity 
public class Articles implements Serializable { 

    private static final long serialVersionUID = 1L; 
    private static final Logger LOG = Logger.getLogger(Articles.class.getName()); 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long id; 
    @Column 
    private String subject; 

    @OneToMany(mappedBy="foo") //a wrapper for Header is needed? 
    private List<Header> headers = new ArrayList<>(); 

    public Articles() { 
    } 

    public Articles(Message message) { 
     try { 
      subject = message.getSubject(); 
     } catch (MessagingException ex) { 
      Logger.getLogger(Articles.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    } 

    public Long getId() { 
     return id; 
    } 

    public void setId(Long id) { 
     this.id = id; 
    } 

    @Override 
    public int hashCode() { 
     int hash = 0; 
     hash += (id != null ? id.hashCode() : 0); 
     return hash; 
    } 

    @Override 
    public boolean equals(Object object) { 
     // TODO: Warning - this method won't work in the case the id fields are not set 
     if (!(object instanceof Articles)) { 
      return false; 
     } 
     Articles other = (Articles) object; 
     if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) { 
      return false; 
     } 
     return true; 
    } 

    @Override 
    public String toString() { 
     return subject; 
    } 

    public String getSubject() { 
     return subject; 
    } 

    public void setSubject(String subject) { 
     this.subject = subject; 
    } 
} 

cevap

27

javax.mail için sarıcıdır.Header gereklidir, genelde doğrudan isteğe bağlı sınıflara devam edemezsiniz, özellikle de Serializable olmayanlar. Ayrıca, varlıklar arasındaki ilişkiyi tasarlayan listenin öğeleri olamaz.

MappedBy değeri, çift yönlü ilişkinin sahip olduğu alanın adıdır.

@OneToMany(mappedBy="article") 
private List<Foo> headers; 

Şimdi bu ilişkinin diğer ucu olması gerektiğini biliyoruz ve o özelliktir: Örneğin bir uğruna, en Foo varlığa bire çok ilişki ilgisi var Makale varlık varsayalım İki yönlü bir ilişki veritabanına kalıcıdır zaman kullanılan

@Entity 
public class Foo { 
... 
    @ManyToOne 
    Article article; 
} 

sahip olmak tarafını (Foo bu durumda makalesinde): Foo varlığa bulunan bir türü olarak Madde var ve makale adlandırılır. JPA 2.0 spesifikasyonu bu şu sözlerle anlatılıyor: yönetilen varlıklar arasındaki

çift yönlü ilişkiler ilişkinin sahibi olan tarafı tarafından tutulan başvurular dayalı kalıcı. numaralı telefonun geliştiricisinin, bellek içi referansları tutulması, tutulması ve ters tarafta tutulanların değiştikleri zaman ile tutarlı olması. Tek yönlü bire bir ve bire çok ilişki durumunda, ilişkilerin semantiklerine uyulduğundan emin olmak için geliştiricinin numaralı sorumluluğudur.

+2

Anlama ışıltısı, lemme git deneyin :) – Thufir

+0

Tamam, ama anladım "Exception Description: [class net.bounceme.dur.usenet.model.Articles] bir varlık olmayan [class javax.mail.Header] kullanıyor ilişki özniteliğinde [alan üstbilgileri] hedef varlık. ”bu yüzden yeniden düşünmem gerekiyor. Ayrıca, bir ManyToMany düşünmek için gelebilir, ama veritabanında her olası üstbilgi isteyeyim - ama bu yolun aşağısında. Bence bu soruya cevap veriyor. Teşekkürler :) – Thufir

1

Kontrol:documentation

ilgili parçasıdır:

 mappedBy 
     The field that owns the relationship. 

O kendini açıklayıcı türüdür. Örnekler ister misin

sizin Article makale birçok başlıkları beri sonra Article realationship sahip olan örneğin birçok Header nesneler varsa.

+2

hangi sınıf alanı pls? – Thufir

+7

belgelerini okuyarak iyi bir cevap değil! Özellikle de korkunç API dosyaları. Ben varlık çerçeve şeyler için yeni ama buradaki anahtar bir bit, normalde başka bir sınıf ( –

+1

) üzerinde bir alan (normalde özel olan) anlamına gelir, ben çok iyi bir soru bile hatırlamıyorum. Normalde bir cevabı reddetmiyorum, değerinin ne olduğu (yukarıdaki gibi olmayan bir cevap gibi), ancak doc bağlantısının 6 yerine javaee5 olduğunu fark ettim.Bence "sahiplik ilişkisi", "Madde" nin sahip olduğu ilişkidir. Şahsen, bir "manuel" değil, bir sayfa veya bölüm olması koşuluyla RTFM bağlantısının hiç bir zaman umursamıyorum. – Thufir

İlgili konular