当前位置: 首页 > 知识库问答 >
问题:

JPA:insert后的数据表不显示@joincolumn@manytone

阳航
2023-03-14

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

插入后,@JoinColumn为空字段。(抱歉,我无法发布图片,这里是图片链接)

插入后

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

重新加载后

我使用单向@ManyToOne实体

位置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;

阿肯。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();
}

我使用的是JavaEE7、glassfish服务器4和primefaces 4.0

多谢你的帮忙

共有1个答案

周奇
2023-03-14
@JoinColumn(name = "prefecture_id",referencedColumnName = "id", updatable = false,insertable = false)

您已将“放置外键”列标记为只读。

删除限制:@JoinColumn(name=“perfessional_id”,referencedColumnName=“id”)

 类似资料:
  • 数据表后,我插入,有一个空白字段,没有显示的实体,因为我不能张贴图像,这里是url 插入后 重新加载/刷新页面后,空字段将在刷新后恢复正常 这是我的实体 有人帮忙吗?这是我的方法保存 方法检索表上的数据 这是我的数据表xhtml 还有这里 加上

  • 问题内容: 解析JSON之后,我将数据保存在ViewController的arraOfData中,但collectionView不会显示此数据。如果我使用静态数组,一切正常。collectionview.reloadData()无法正常工作。我认为,需要以某种方式等待解析的数据,然后尝试加载collectionView。我尝试使用refreshControler来等待数据,但是我不知道put方法“

  • 我是一个初学者一般反应和前端开发。这里有一个显示表格的“简单”代码。 错误如下: 警告:列表中的每个孩子都应该有一个唯一的“键”道具。 检查。看见https://banned-fb.example.com/react-warning-keys了解更多信息。在TableDataRow(在Table.js:30)在TableBody(在Table.js:44)在Table(在Table.js:42)在

  • 示例类: 属性(源): 但是,每当我访问并单击Connect时,就会直接指向一个空白的白色页面。当我使用“测试连接”按钮时,它说“测试成功”。正如本问题中提到的,我尝试了JDBC:h2:mem:testdb和JDBC:h2:~/test来获取JDBC URL。 IDE控制台中不会显示错误。问题可能是什么?谢了。

  • 我现在正在使用UITableView,我所拥有的是 我的类.h @ interface my class:UIViewController { } @property (strong,strong)ui label * name; @属性(strong,strong)UILabel*add; 和 我的班级.m -(NSInteger)tableView:(UITableView*)atableVi

  • 问题内容: 我正在尝试填写从GET请求中收到的一些数据。我不知道为什么,但是如果在我的中,我返回一个特定的值(例如8),它表示信息。如果y返回请求填充的数组的值,则不添加任何行: 知道为什么会这样吗?非常感谢你!! 更新! 我解决了这个问题,在loadUserData()函数内的complete()之后添加了self.tableView.reloadData()。希望能帮助到你! 问题答案: 快速