私はOne To ManyとMany To To Relationsを取得しようとすると、車両テーブルのジョインカラムに問題があります。なぜハイバーネーションがテーブルにジョインするのではなく、カラムUSER_IDを検索していますか?私は参加の目的を知っていますが、マップされたBy属性でこのエラーを使用しようとしたときにこのエラーが発生しました。そのコードの何が間違っていますか?私が得たHibernate mappedByと@JoinColumn
例外:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:不明な列 'USER_ID' 'フィールドリスト'
中に起因
ユーザーテーブル:
@Entity @Table(name = "users") public class User { public User(){} public int getId() { return id; } public void setId(int id) { this.id = id; } 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; } @Override public String toString() { return "User{" + "id=" + id + ", first_name='" + first_name + '\'' + ", salary=" + salary + ", last_name=" + last_name + '}'; } public Collection<Vehicle> getVehicles() { return vehicles; } public void setVehicles(Collection<Vehicle> vehicles) { this.vehicles = vehicles; } @OneToMany(mappedBy = "user") private Collection<Vehicle> vehicles = new ArrayList<>(); public Collection<Address> getAddresses() { return addresses; } public void setAddresses(Collection<Address> addresses) { this.addresses = addresses; } @ElementCollection // for saving the collection or persist it to database @JoinTable(joinColumns = @JoinColumn(name = "fk_user_id")) // will add to the fk created table renamed column "fk_user_id" private Collection<Address> addresses = new ArrayList<>(); @Id @Column(name = "user_id") private int id; @Column(name = "first_name") private String first_name; @Column(name = "salary") private int salary; @Column(name = "last_name") private String last_name; }
車両:
@Entity @Table(name = "vehicle") public class Vehicle { public User getUser() { return user; } public void setUser(User user) { this.user = user; } @ManyToOne @JoinColumn(name = "USER_ID") private User user; public int getVehicle_id() { return vehicle_id; } public void setVehicle_id(int vehicle_id) { this.vehicle_id = vehicle_id; } public String getVehicle_name() { return vehicle_name; } public void setVehicle_name(String vehicle_name) { this.vehicle_name = vehicle_name; } @Id private int vehicle_id; private String vehicle_name; }
車両テーブルにUSER_ID列がありますか? –
いいえ! vehicle_idとvehicle_name、@Join列は基本的に存在列の名前を変更しますか? –
私はそれがテーブルに列を結合することができ、それを名前を変更することができます理解しています。私は私のユーザーテーブルのuser_id列を持っています。 –