【问题标题】:JPA: data table after insert doesnt show the @joincolumn @ManyToOneJPA:插入后的数据表不显示@joincolumn @ManyToOne
【发布时间】:2014-01-28 23:28:51
【问题描述】:

我正在尝试使用 JPA 和 JSF-primefaces 的 Web 项目。 我有一个插入/更新具有@ManyToOne 关系的对象的错误。

插入后,@JoinColumn 为空白字段。 (对不起,我无法发布图片,这是图片链接)

after insert

然后,重新加载列表后,空白字段恢复正常

after reload

我正在使用单向 @ManyToOne 实体

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

感谢您的帮助

【问题讨论】:

    标签: java jpa jsf-2 primefaces


    【解决方案1】:
    @JoinColumn(name = "prefecture_id",referencedColumnName = "id", updatable = false,insertable = false)
    

    您将外键列标记为 READONLY。

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

    【讨论】:

      猜你喜欢
      • 2013-05-01
      • 2022-09-23
      • 1970-01-01
      • 1970-01-01
      • 2020-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-26
      相关资源
      最近更新 更多