简体   繁体   中英

Hibernate one-to-many mapping integrity constraint violation

@Entity
@Table(name = "accommodation")
public class Accommodation {

public Accommodation(){

}

public Accommodation(String name, Boolean status, Def country, Def region, Def town, Def star){
    this.name = name;
    this.status = status;
    this.country = country;
    this.region = region;
    this.town = town;
    this.star = star;
}

private Long id;
private List<AccommodationCategory> accommodationCategoryList = new ArrayList<AccommodationCategory>();

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ACC_ID", unique = true, nullable = false)
public Long getId() {
    return id;
}


@OneToMany(fetch = FetchType.LAZY, mappedBy = "accommodation")
public List<AccommodationCategory> getAccommodationCategoryList() {
    return accommodationCategoryList;
}

public void setAccommodationCategoryList(List<AccommodationCategory> accommodationCategoryList) {
    this.accommodationCategoryList = accommodationCategoryList;
}
}


@Entity
@Table(name = "accommodation_category")
public class AccommodationCategory{

public AccommodationCategory(){}
public AccommodationCategory(String name, Boolean valid) {
    this.name = name;
    this.valid = valid;
}

private Long id;
private String name;
private Boolean valid;
private Accommodation accommodation;



@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ACC_CAT_ID", unique = true, nullable = false)
public Long getId() {
    return id;
}



public Boolean getValid() {
    return valid;
}
public void setValid(Boolean valid) {
    this.valid = valid;
}


@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "ACC_ID", nullable = false)
public Accommodation getAccommodation() {
    return accommodation;
}

public void setAccommodation(Accommodation accommodation) {
    this.accommodation = accommodation;
}

public void setId(Long id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}
}

Accommodation has many AccommodationCategory, but when I save to db I get

Caused by: org.hsqldb.HsqlException: integrity constraint violation: NOT NULL check constraint; SYS_CT_10115 table: ACCOMMODATION_CATEGORY column: ACC_ID
    at org.hsqldb.error.Error.error(Unknown Source) ~[hsqldb-2.3.0.jar:2.3.0]
    at org.hsqldb.Table.enforceRowConstraints(Unknown Source) ~[hsqldb-2.3.0.jar:2.3.0]
    at org.hsqldb.Table.insertSingleRow(Unknown Source) ~[hsqldb-2.3.0.jar:2.3.0]
    at org.hsqldb.StatementDML.insertRowSet(Unknown Source) ~[hsqldb-2.3.0.jar:2.3.0]
    at org.hsqldb.StatementInsert.getResult(Unknown Source) ~[hsqldb-2.3.0.jar:2.3.0]
    at org.hsqldb.StatementDMQL.execute(Unknown Source) ~[hsqldb-2.3.0.jar:2.3.0]
    at org.hsqldb.Session.executeCompiledStatement(Unknown Source) ~[hsqldb-2.3.0.jar:2.3.0]
    at org.hsqldb.Session.execute(Unknown Source) ~[hsqldb-2.3.0.jar:2.3.0]

error.

The error same ACC_ID is null in Accommodation.By default Long variables have null values

 @Column(name = "ACC_ID", unique = true, nullable = false)
 public Long getId() {
    return id;
 }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM