列数错误?

时间:2017-02-21 00:15:28

标签: java hibernate

例外:

  
    

线程中的异常" main" org.hibernate.AnnotationException:从com.demo.Address引用com.demo.User的外键具有错误的列数。应该是1

  

任何机构都可以解释我这里的问题是什么?

用户表!

@Entity
@Table(name = "users")
public class User {

public User(){}

public String getFirst_name() {
    return first_name;
}

public void setFirst_name(String first_name) {
    this.first_name = first_name;
}

public int getSalary() {
    return salary;
}

public void setSalary(int salary) {
    this.salary = salary;
}

public String getLast_name() {
    return last_name;
}

public void setLast_name(String last_name) {
    this.last_name = last_name;
}

public int getId() {
    return id;
}

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

@Override
public String toString() {
    return "User{" +
            "id=" + id +
            ", first_name='" + first_name + '\'' +
            ", salary=" + salary +
            ", last_name=" + last_name +
            '}';
}

public Collection<Address> getAddresses() {
    return addresses;
}

public void setAddresses(Collection<Address> addresses) {
    this.addresses = addresses;
}


@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(name = "addresses" , joinColumns = {@JoinColumn(name = "user's_city"),@JoinColumn(name = "id")})
private Collection<Address> addresses = new ArrayList<>();

    @Id
    @Column(name = "user's_id")
    private int id;

    @Column(name = "first_name")
    private String first_name;
    @Column(name = "user_salary")
    private int salary;
    @Column(name = "last_name")
    private String last_name;

地址表:

@Entity
@Table(name = "addresses")
public class Address {

public String getStreet() {
    return street;
}

public void setStreet(String street) {
    this.street = street;
}

public String getCountry() {
    return country;
}

public void setCountry(String country) {
    this.country = country;
}

public String getCity() {
    return city;
}

public void setCity(String city) {
    this.city = city;
}

@Override
public String toString() {
    return "Address{" +
            "street='" + street + '\'' +
            ", country='" + country + '\'' +
            ", city='" + city + '\'' +
            '}';
}

public User getUser() {
    return user;
}

public void setUser(User user) {
    this.user = user;
}

@ManyToOne(cascade = CascadeType.ALL,fetch = FetchType.LAZY)
@JoinColumn(name = "user's_id")
private User user;

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;

@Column(name = "user's_street")
private String street;

@Column(name = "user's_country")
private String country;

@Column(name = "user's_city")
private String city;

public Address(){}

}

主要的例外,这条线!

Configuration configuration = new Configuration().configure("META-INF/hibernate.cfg.xml");
    SessionFactory sessionFactory = configuration.buildSessionFactory();

cgf.xml:

   <hibernate-configuration>
   <session-factory>

    <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
    <property name="hibernate.hbm2ddl.auto">create</property>
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernatedemo</property>
    <property name="hibernate.connection.username">****</property>
    <property name="hibernate.connection.password">****</property>
    <property name="hibernate.show_sql">true</property>

    <mapping class="com.demo.Address"/>
    <mapping class="com.demo.User"/>

</session-factory>

0 个答案:

没有答案