繁体   English   中英

IllegalArgumentException,属性的getter方法,避免冗余数据

[英]IllegalArgumentException, getter method of property, avoiding redundant data

我正在尝试将新行程添加到数据库中。 它们之间存在多对一的关系,因此可以将一个位置分配到多个位置。 地点已正确添加,但是在添加行程时会出现此异常...我知道有很多类似的主题,但是没有一个主题帮助我解决了这个问题。

ERROR: HHH000122: IllegalArgumentException in class: pl.th.java.biuro.hibernate.Place, getter method of property: idPlace
Exception found while adding new trip: IllegalArgumentException occurred calling getter of pl.th.java.biuro.hibernate.Place.idPlace
org.hibernate.PropertyAccessException: IllegalArgumentException occurred calling getter of pl.th.java.biuro.hibernate.Place.idPlace
at org.hibernate.property.BasicPropertyAccessor$BasicGetter.get(BasicPropertyAccessor.java:192)

休眠行程映射:

<hibernate-mapping>
<class name="pl.th.java.biuro.hibernate.Trip" table="Trip">
    <id column="idTrip" name="idTrip" type="int"/>
    <property column="date" name="date" type="date"/>
    <property column="cost" name="cost" type="int"/>
    <property column="profit" name="profit" type="int"/>
    <property column="organisator" name="organisator" type="string"/>
    <property column="period" name="period" type="int"/>
    <property column="food" name="food" type="string"/>
    <property column="transport" name="transport" type="string"/>
    <property column="persons" name="persons" type="int"/>
    <property column="kidsAmount" name="kidsAmount" type="int"/>
    <property column="idHotel" name="idHotel" type="int"/>
    <many-to-one name="idPlace" column="idPlace" class="pl.th.java.biuro.hibernate.Place" not-null="true" />
</class>

休眠位置映射:

<hibernate-mapping>
<class name="pl.th.java.biuro.hibernate.Place" table="Place">
    <id column="idPlace" name="idPlace" type="int">
        <generator class="native"/>
    </id>
    <property column="country" name="country" type="string"/>
    <property column="city" name="city" type="string"/>
    <property column="island" name="island" type="string"/>
    <property column="information" name="information" type="string"/>
</class>

行程类别:

public class Trip {

private int idTrip;
private int idPlace;
private int idHotel;
private Date date;
private int cost;
private int profit;
private String organisator;
private int period;
private String food;
private String transport;
private int persons;
private int kidsAmount;

private String ownerName;
private String ownerLastName;

private Place place;

public Trip() {

}

public Trip(int idTrip, Date date, int cost, int profit, String organisator, int period, String food, String transport, int persons, int kidsAmount) {
    this.idTrip = idTrip;
    this.date = date;
    this.cost = cost;
    this.profit = profit;
    this.organisator = organisator;
    this.period = period;
    this.food = food;
    this.transport = transport;
    this.persons = persons;
    this.kidsAmount = kidsAmount;
}

public Trip(int idTrip, Date date, int cost, int profit, String organisator, int period, String food, String transport, int persons, int kidsAmount, String ownerName, String ownerLastName, Place place) {
    this.idTrip = idTrip;
    this.date = date;
    this.cost = cost;
    this.profit = profit;
    this.organisator = organisator;
    this.period = period;
    this.food = food;
    this.transport = transport;
    this.persons = persons;
    this.kidsAmount = kidsAmount;
    this.ownerName = ownerName;
    this.ownerLastName = ownerLastName;
    this.place = place;
}

/**
 * @return the idTrip
 */
public int getIdTrip() {
    return idTrip;
}

/**
 * @param idTrip the idTrip to set
 */
public void setIdTrip(int idTrip) {
    this.idTrip = idTrip;
}

    /**
 * @return the place
 */
public Place getPlace() {
    return place;
}

/**
 * @param place the place to set
 */
public void setPlace(Place place) {
    this.place = place;
}
And other get/set methods...

地方课程:

public class Place {


private int idPlace;
private String country;
private String city;
private String island;
private String information;

public Place() {

}

public Place(String country, String city, String island, String information) {
    this.country = country;
    this.city = city;
    this.island = island;
    this.information = information;
}

/**
 * @return the idPlace
 */
public int getIdPlace() {
    return idPlace;
}

/**
 * @param idPlace the idPlace to set
 */
public void setIdPlace(int idPlace) {
    this.idPlace = idPlace;
}

EDIT1添加适当的实体现在为我工作,但我想知道有没有什么办法来避免冗余数据? 例如,我添加了一个行程,并与此行连接的部位X。 当我添加另一行,但在这同一个地方 - X,这个地方再次添加到我的数据库。 如何避免这种行为?

ERROR: HHH000122: IllegalArgumentException in class: pl.th.java.biuro.hibernate.Place, getter method of property: idPlace

我认为您在插入操作中得到了这个。 前面的意思是,您正在向idPlace列插入非法参数。 你用many-to-onepl.th.java.biuro.hibernate.Place并插入一个intpl.th.java.biuro.hibernate.Place 您必须将idPlace类型从int更改为pl.th.java.biuro.hibernate.Place

我希望这能帮到您。

您应该修改int idPlace int到对象的旅程pl.th.java.biuro.hibernate.Place

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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