Mysql自动生成PK用于另一个表和JPA的问题

Mysql自动生成PK用于另一个表和JPA的问题,mysql,primary-key,jpa-2.0,auto-generate,Mysql,Primary Key,Jpa 2.0,Auto Generate,我的用例如下:我使用MySQL和jpa2,我有两个实体:Order和LineItem,它们通过一个OneToMany关系关联 我希望GUI层能够同时将订单和行项目保存在一起 请记住,订单主键是MySQL自动生成的,是LineItem主键的一部分,我不知道如何检索生成的订单主键,以便将其用于同一事务中的LineItem主键 有人能帮忙吗 根据您的反馈,这里是一些来自实体的示例代码(我实际上编写了上面的用例/域。我的更复杂,所以您不会看到任何订单或行项目) @实体 @表(name=“广告”) @继承

我的用例如下:我使用MySQL和jpa2,我有两个实体:OrderLineItem,它们通过一个OneToMany关系关联

我希望GUI层能够同时将订单和行项目保存在一起

请记住,订单主键是MySQL自动生成的,是LineItem主键的一部分,我不知道如何检索生成的订单主键,以便将其用于同一事务中的LineItem主键

有人能帮忙吗

根据您的反馈,这里是一些来自实体的示例代码(我实际上编写了上面的用例/域。我的更复杂,所以您不会看到任何订单或行项目)

@实体
@表(name=“广告”)
@继承(策略=InheritanceType.JOINED)
@鉴别器列(name=“status\u need\u ID”,鉴别器类型=鉴别器类型.INTEGER)
@命名查询({
@NamedQuery(name=“advision.findAll”,query=“从广告a中选择a”),
@NamedQuery(name=“advision.findbyadvertisementtid”,query=“从广告a中选择一个,其中a.advisementId=:advisementId”),
@NamedQuery(name=“advision.findbyadvertisementttitle”,query=“从广告a中选择一个,其中a.advisementTitle=:advisementTitle”),
@NamedQuery(name=“advision.findByAdvertisementCreationDate”,query=“从广告a中选择a,其中a.advisioncreationdate=:advisioncreationdate”),
@NamedQuery(name=“advision.findByStatusneedID”,query=“从广告a中选择a,其中a.statusneedID=:statusneedID”)}
公共类广告实现了可序列化{
私有静态最终长serialVersionUID=1L;
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
@基本(可选=假)
@列(name=“advision\u ID”,nullable=false)
私有整数广告ID;
@基本(可选=假)
@列(name=“advision\u title”,null=false,长度=200)
私有字符串广告标题;
@列(name=“广告\创建\日期”)
@时态(TemporalType.TIMESTAMP)
私人日期广告创意日期;
@基本(可选=假)
@高球
@列(name=“advertization\u body”,nullable=false,length=2147483647)
私有字符串广告主体;
@列(name=“status\u need\u ID”)
私有整数statusneedID;
@JoinTable(name=“postcode\u to\u advision\u join”,JointColumns={
@JoinColumn(name=“advision\u ID”,referencedColumnName=“advision\u ID”,nullable=false)},inverseJoinColumns={
@JoinColumn(name=“postcode\u ID”,referencedColumnName=“postcode\u ID”,nullable=false)})
@许多
私人收藏邮政编码收藏;
@JoinTable(name=“广告时间到join”,joinColumns={
@JoinColumn(name=“advision\u ID”,referencedColumnName=“advision\u ID”,nullable=false)},inverseJoinColumns={
@JoinColumn(name=“duration\u ID”,referencedColumnName=“duration\u ID”,nullable=false)})
@许多
私人收藏期限收藏;
@JoinTable(name=“完整或部分时间基础”到“广告”,joinColumns={
@JoinColumn(name=“advision\u ID”,referencedColumnName=“advision\u ID”,nullable=false)},inverseJoinColumns={
@JoinColumn(name=“完整”或“部分”时间基础\u ID”,referencedColumnName=“完整”或“部分”时间基础\u ID”,nullable=false)})
@许多
私人收集全部或部分时间基本收集;
@JoinTable(name=“广告”到“儿童护理”类型,JointColumns={
@JoinColumn(name=“advision\u ID”,referencedColumnName=“advision\u ID”,nullable=false)},inverseJoinColumns={
@JoinColumn(name=“child\u care\u type\u ID”,referencedColumnName=“child\u care\u type\u ID”,nullable=false)})
@许多
私人收藏childCareTypeCollection;
@JoinTable(name=“广告\学校\假日\加入”,JointColumns={
@JoinColumn(name=“advision\u ID”,referencedColumnName=“advision\u ID”,nullable=false)},inverseJoinColumns={
@JoinColumn(name=“school\u holiday\u ID”,referencedColumnName=“school\u holiday\u ID”,nullable=false)})
@许多
私人收藏学校假期收藏;
@JoinTable(name=“就业合同”到“广告”,JointColumns={
@JoinColumn(name=“advision\u ID”,referencedColumnName=“advision\u ID”,nullable=false)},inverseJoinColumns={
@JoinColumn(name=“employment\u contract\u ID”,referencedColumnName=“employment\u contract\u ID”,nullable=false)})
@许多
私人收藏雇佣合同收藏;
@OneToMany(cascade=CascadeType.ALL,mappedBy=“广告”)
私人收藏广告到TimeSlottoDayJoinCollection;
@OneToMany(cascade=CascadeType.ALL,mappedBy=“advertisementID”)
私人募捐;
@OneTONE(cascade=CascadeType.ALL,mappedBy=“广告”)
私人的父母父母的父母;
@OneTONE(cascade=CascadeType.ALL,mappedBy=“广告”)
私人父母子女广告;
@JoinColumn(name=“child\u care\u location\u ID”,referencedColumnName=“child\u care\u location\u ID”,nullable=false)
@多通(可选=假)
私有ChildCareLocation childcarelocationID;
@JoinColumn(name=“account\u ID”,referencedColumnName=“account\u ID”,nullable=false)
@多通(可选=假)
私人帐户账号;
@实体
@表(name=“广告”到“时间”到“时段”到“日期”加入”,schema=“bignibou”)
@命名查询({
@NamedQuery(name=“AdvertisementToTimeSlotToDayJoin.findAll”,query=“从AdvertisementToTimeSlotToDayJoin a中选择a”),
@命名
@Entity
@Table(name = "advertisement")
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "status_need_ID", discriminatorType = DiscriminatorType.INTEGER)
@NamedQueries({
    @NamedQuery(name = "Advertisement.findAll", query = "SELECT a FROM Advertisement a"),
    @NamedQuery(name = "Advertisement.findByAdvertisementID", query = "SELECT a FROM Advertisement a WHERE a.advertisementID = :advertisementID"),
    @NamedQuery(name = "Advertisement.findByAdvertisementTitle", query = "SELECT a FROM Advertisement a WHERE a.advertisementTitle = :advertisementTitle"),
    @NamedQuery(name = "Advertisement.findByAdvertisementCreationDate", query = "SELECT a FROM Advertisement a WHERE a.advertisementCreationDate = :advertisementCreationDate"),
    @NamedQuery(name = "Advertisement.findByStatusneedID", query = "SELECT a FROM Advertisement a WHERE a.statusneedID = :statusneedID")})
public class Advertisement implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "advertisement_ID", nullable = false)
    private Integer advertisementID;
    @Basic(optional = false)
    @Column(name = "advertisement_title", nullable = false, length = 200)
    private String advertisementTitle;
    @Column(name = "advertisement_creation_date")
    @Temporal(TemporalType.TIMESTAMP)
    private Date advertisementCreationDate;
    @Basic(optional = false)
    @Lob
    @Column(name = "advertisement_body", nullable = false, length = 2147483647)
    private String advertisementBody;
    @Column(name = "status_need_ID")
    private Integer statusneedID;
    @JoinTable(name = "postcode_to_advertisement_join", joinColumns = {
        @JoinColumn(name = "advertisement_ID", referencedColumnName = "advertisement_ID", nullable = false)}, inverseJoinColumns = {
        @JoinColumn(name = "postcode_ID", referencedColumnName = "postcode_ID", nullable = false)})
    @ManyToMany
    private Collection<Postcode> postcodeCollection;
    @JoinTable(name = "advertisement_to_duration_join", joinColumns = {
        @JoinColumn(name = "advertisement_ID", referencedColumnName = "advertisement_ID", nullable = false)}, inverseJoinColumns = {
        @JoinColumn(name = "duration_ID", referencedColumnName = "duration_ID", nullable = false)})
    @ManyToMany
    private Collection<Duration> durationCollection;
    @JoinTable(name = "full_or_part_time_basis_to_advertisement_join", joinColumns = {
        @JoinColumn(name = "advertisement_ID", referencedColumnName = "advertisement_ID", nullable = false)}, inverseJoinColumns = {
        @JoinColumn(name = "full_or_part_time_basis_ID", referencedColumnName = "full_or_part_time_basis_ID", nullable = false)})
    @ManyToMany
    private Collection<FullOrPartTimeBasis> fullOrPartTimeBasisCollection;
    @JoinTable(name = "advertisement_to_child_care_type_join", joinColumns = {
        @JoinColumn(name = "advertisement_ID", referencedColumnName = "advertisement_ID", nullable = false)}, inverseJoinColumns = {
        @JoinColumn(name = "child_care_type_ID", referencedColumnName = "child_care_type_ID", nullable = false)})
    @ManyToMany
    private Collection<ChildCareType> childCareTypeCollection;
    @JoinTable(name = "advertisement_to_school_holiday_join", joinColumns = {
        @JoinColumn(name = "advertisement_ID", referencedColumnName = "advertisement_ID", nullable = false)}, inverseJoinColumns = {
        @JoinColumn(name = "school_holiday_ID", referencedColumnName = "school_holiday_ID", nullable = false)})
    @ManyToMany
    private Collection<SchoolHoliday> schoolHolidayCollection;
    @JoinTable(name = "employment_contract_to_advertisement_join", joinColumns = {
        @JoinColumn(name = "advertisement_ID", referencedColumnName = "advertisement_ID", nullable = false)}, inverseJoinColumns = {
        @JoinColumn(name = "employment_contract_ID", referencedColumnName = "employment_contract_ID", nullable = false)})
    @ManyToMany
    private Collection<EmploymentContract> employmentContractCollection;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "advertisement")
    private Collection<AdvertisementToTimeSlotToDayJoin> advertisementToTimeSlotToDayJoinCollection;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "advertisementID")
    private Collection<Salary> salaryCollection;
    @OneToOne(cascade = CascadeType.ALL, mappedBy = "advertisement")
    private ParentToParentAdvertisement parentToParentAdvertisement;
    @OneToOne(cascade = CascadeType.ALL, mappedBy = "advertisement")
    private ParentToChildMinderAdvertisement parentToChildMinderAdvertisement;
    @JoinColumn(name = "child_care_location_ID", referencedColumnName = "child_care_location_ID", nullable = false)
    @ManyToOne(optional = false)
    private ChildCareLocation childcarelocationID;
    @JoinColumn(name = "account_ID", referencedColumnName = "account_ID", nullable = false)
    @ManyToOne(optional = false)
    private Account accountID;



@Entity
@Table(name = "advertisement_to_time_slot_to_day_join",schema="bignibou")
@NamedQueries({
    @NamedQuery(name = "AdvertisementToTimeSlotToDayJoin.findAll", query = "SELECT a FROM AdvertisementToTimeSlotToDayJoin a"),
    @NamedQuery(name = "AdvertisementToTimeSlotToDayJoin.findByDayID", query = "SELECT a FROM AdvertisementToTimeSlotToDayJoin a WHERE a.advertisementToTimeSlotToDayJoinPK.dayID = :dayID"),
    @NamedQuery(name = "AdvertisementToTimeSlotToDayJoin.findByTimeslotID", query = "SELECT a FROM AdvertisementToTimeSlotToDayJoin a WHERE a.advertisementToTimeSlotToDayJoinPK.timeslotID = :timeslotID"),
    @NamedQuery(name = "AdvertisementToTimeSlotToDayJoin.findByAdvertisementID", query = "SELECT a FROM AdvertisementToTimeSlotToDayJoin a WHERE a.advertisementToTimeSlotToDayJoinPK.advertisementID = :advertisementID")})
public class AdvertisementToTimeSlotToDayJoin implements Serializable {
    private static final long serialVersionUID = 1L;
    @EmbeddedId
    protected AdvertisementToTimeSlotToDayJoinPK advertisementToTimeSlotToDayJoinPK;
    @JoinColumn(name = "time_slot_ID", referencedColumnName = "time_slot_ID", nullable = false, insertable = false, updatable = false)
    @ManyToOne(optional = false)
    private TimeSlot timeSlot;
    @JoinColumn(name = "day_ID", referencedColumnName = "day_ID", nullable = false, insertable = false, updatable = false)
    @ManyToOne(optional = false)
    private Day day;
    @JoinColumn(name = "advertisement_ID", referencedColumnName = "advertisement_ID", nullable = false, insertable = false, updatable = false)
    @ManyToOne(optional = false)
    private Advertisement advertisement;
@Entity
public class Order {
    @Id 
    @GeneratedValue(strategy=GenerationType.AUTO) 
    long id;

    @OneToMany(cascade={})
    Set<LineItem> lineItems;
}