2014-01-10 124 views
0

我正在嘗試使用JPA和JSF-primefaces的Web項目。 我有插入/更新具有@ManyToOne關係的對象的錯誤。JPA:插入後的數據表不顯示@joincolumn @ManyToOne

插入後,@JoinColumn是空白字段。 (對不起ican't後的圖像,這是圖像鏈接)

after insert

,然後,重裝後的名單,空白字段恢復正常

after reload

我使用的是單向@多對一實體

Place.java

@Entity 
@Table(name = "place") 
@XmlRootElement 

public class Place implements Serializable { 
    private static final long serialVersionUID = 1L; 
    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Basic(optional = false) 
    @Column(name = "id") 
    private Integer id; 
    ... 
    @Basic(optional = false) 
    @NotNull 
    @Column(name = "prefecture_id") 
    private int prefectureId; 

    @ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL) 
    @JoinColumn(name = "prefecture_id",referencedColumnName = "id", updatable = false,insertable = false) 
    private Aken prefecture; 

Aken.java

@Entity 
@Table(name = "aken") 
@XmlRootElement 
public class Aken implements Serializable { 
    private static final long serialVersionUID = 1L; 
    @Id 
    @Basic(optional = false) 
    @NotNull 
    @Column(name = "id") 
    private Short id; 
    @Size(max = 50) 
    @Column(name = "data") 
    private String data; 

到數據庫的方法更新

@Stateless 
@TransactionManagement(TransactionManagementType.BEAN) 
public class PlaceFacade extends AbstractFacade<Place> { 
    @PersistenceContext(unitName = "JutenPU") 
    private EntityManager em; 

    @Resource 
    private UserTransaction userTransaction; 

    public void edit(Place place){ 
     try{ 
      getUserTransaction().begin(); 
      getEntityManager().merge(place); 
      getUserTransaction().commit(); 
      }catch(Exception e){ 
      System.out.println(e.getMessage()); 
      } 
     } 

方法檢索表數據

public List<Place> findAll() { 
    javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery(); 
    cq.select(cq.from(Place.class)); 
    return getEntityManager().createQuery(cq).getResultList(); 
} 

我使用JAVA EE7,GlassFish服務器4,primefaces 4.0

感謝您的幫助

回答

0
@JoinColumn(name = "prefecture_id",referencedColumnName = "id", updatable = false,insertable = false) 

您標記了放置外鍵列READONLY。

刪除限制:@JoinColumn(name = "prefecture_id",referencedColumnName = "id")