Java 如何使用xtra列和hibernate持久化jointable
我想通过hibernate将数据持久化到数据库中。 我的模型看起来像:Java 如何使用xtra列和hibernate持久化jointable,java,hibernate,jpa,Java,Hibernate,Jpa,我想通过hibernate将数据持久化到数据库中。 我的模型看起来像: campaign | campaign_staffs | staffs ------------------------------------------------------------- id_campaign (PK) | id_campaign (PK) | id_staff (PK) .. | id_staff (PK)
campaign | campaign_staffs | staffs
-------------------------------------------------------------
id_campaign (PK) | id_campaign (PK) | id_staff (PK)
.. | id_staff (PK) | ...
.. | ordernumber | ....
因为一个活动可以有n个员工,一个员工可以负责n个营地。所以我需要一个连接表
ordernumber of campaign_Staff是活动中员工的顺序。e、 g:
id_campaign | id_staff | ordernumber
---------------------------------------------
4711 | 4822 | 1
4711 | 5383 | 2
4711 | 2574 | 3
4812 | 432 | 1
4812 | 9234 | 2
我想你会得到的
因此,我的活动Entitycode看起来像(代码片段):
以及为竞选工作人员(CompositePK)
因此,如果我想要如此持久的东西,我会得到错误消息:
错误org.hibernate.engine.jdbc.spi.SqlExceptionHelper-错误:“ordernumber”列中的null值违反了非null约束
详细信息:失败的行包含(4641969829,null)。
hibernate知道,我必须如何更改代码,他必须将一个数字按顺序排列?这是否回答了您的问题?不是真的。hibernate不会自动设置带有答案的订单号。请使用新代码更新问题在我更新代码后,出现了一条带有int/integer错误的新错误消息。所以我决定接受我的旧代码,希望有人能帮助我。我告诉过你们,他们是做你们想做的事情的唯一方法。这一切都在张贴的链接。您不能对代码和需求执行任何操作
@Column(name = "id_campaign")
private int id;
@OneToMany(mappedBy ="id.idCampaign")
private Set<CampaignStaff> staffs = new HashSet<CampaignStaff>(0);
@Column(name = "id_staffs")
private int id;
@OneToMany(mappedBy ="id.idStaffs")
private Set<CampaignStaff> campaignstaffs = new HashSet<CampaignStaff>(0);
@EmbeddedId
private CampaignStaffPK id;
private Integer ordernumber;
@ManyToOne
@JoinColumn(name="id_campaign")
private Campaign idCampaign;
@ManyToOne
@JoinColumn(name="id_staffs")
private Staffs idStaffs;
@ManyToOne
@JoinColumn(name="id_campaign")
private Campaign idCampaign;
@ManyToOne
@JoinColumn(name="id_staffs")
private Staffs idStaffs;