【问题标题】:MySQLSyntaxErrorException: Unknown column 'vehicle_vehicleId' in 'field list'MySQLSyntaxErrorException:“字段列表”中的未知列“vehicle_vehicleId”
【发布时间】:2016-11-13 06:56:57
【问题描述】:

尝试运行一个简单的示例。但出现以下错误。可能是个愚蠢的错误。

错误:

MySQLSyntaxErrorException:未知列 'vehicle_vehicleId' 在 '字段列表'

代码:

用户.java

public class User {

  @Id @GeneratedValue
  private Long userId;

  @OneToOne
  private Vehicle vehicle;

  // Getter and setter of userId and vehicle
}

Vehicle.java:

@Entity 
public class Vehicle {

    @Id @GeneratedValue
    private int vehicleId;

    private String vehicleName;

    // getter and setter of vehicleId and vehicleName 
}

MainClass.java

SessionFactory sessionFact = new Configuration().configure().buildSessionFactory();
User user1 = new User();

Session session = sessionFact.openSession();
Transaction tx = session.beginTransaction();
user1.setUserAddress("USA");
user1.setUserName("John");
Vehicle vehicle1 = new Vehicle();
vehicle1.setVehicleName("Ferrari");
user1.setVehicle(vehicle1);
session.save(user1);
session.save(vehicle1);
tx.commit();
session.close();

我不知道为什么它不能创建映射列'vehicle_vehicleId'。 我经历了以下 SO 答案。但实际上并没有帮助。

请帮忙

【问题讨论】:

  • 这在我看来像是 MySQL 错误,而不是休眠错误。
  • @SamOrozco。是的 。实际上它在重新启动 MySQL 服务器后得到了解决。但是在成功运行一次主类之后,我又遇到了这个问题
  • 尝试在@OneToOne 上方添加@Column(name ="vehicle_vehicle")

标签: java mysql hibernate


【解决方案1】:

我在@OneToOne 中看不到描述两个关系之间关系的@JoinColumn 或mappedBy 属性。请看下面的例子,它会让你清楚地了解@OneToOne。

One To One Relationship Example

【讨论】:

  • 如果我不写@JoinColumn hibernate 应该以 tableName_columnName 格式创建自己的新列
  • 是的,这将被创建,但在这种情况下,列存在于所有者的关系中,而不是存在于其他关系中。也许这是导致问题的原因。
【解决方案2】:

对我来说,它是通过在数据库中手动添加列来解决的。

【讨论】:

    猜你喜欢
    • 2011-07-27
    • 1970-01-01
    • 1970-01-01
    • 2013-02-27
    • 2017-06-27
    • 1970-01-01
    • 2016-10-07
    • 2014-03-19
    • 2014-07-19
    相关资源
    最近更新 更多