我的使用情況如下:我使用MySQL和JPA 2,我有兩個實體:訂購和的LineItem由一個一對多的關係相關。問題與MySQL自動生成的PK用於另一個表和JPA
我想爲GUI層在同一時間一起LineItem的持續訂單。
銘記秩序PK是自動生成的由MySQL和是LineItem的的PK的一部分,我不知道如何才能將其用於檢索生成的訂單PK LineItem PK在同一個事務中。
任何人都可以幫忙嗎?
而且您的反饋,這裏是從實體的一些示例代碼(我實際上是由用例/域之上。我的是更復雜的,所以你不會看到任何訂單或LineItem的)。
@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;
您可以加入的代碼實體映射? – 2012-01-17 15:41:26
謝謝。如何做你在JPA中描述的內容?可能嗎? – balteo 2012-01-17 15:42:12