我刚开始使用hibernate编程,请帮帮我,我在执行下面的文件时遇到了问题。我使用的是MySQL数据库。我的错误是
SLF4J:未能加载类“org.slf4j.impl.StatibloggerBinder”。slf4j:默认为无操作(NOP)记录器实现slf4j:有关更多细节,请参见http://www.slf4j.org/codes.html#staticloggerbinder。Hibernate:插入到UserDetails(用户名)值(?)Hibernate:插入到UserDetails(用户名)值(?)Hibernate:插入到UserDetails(用户名)值(?)Hibernate:插入车辆(vehiName)值(?)Hibernate:插入车辆(vehiName)值(?)Hibernate:插入到userdetails_vehice(UserDetails_userID,vehi_vehiID)值(?,?)Hibernate:插入到userdetails_vehice(UserDetails_userID,vehi_vehiID)值(?,?)Hibernate:插入到userdetails_vehice(UserDetails_userID,vehi_vehiID)值(?,?)
线程“main”org.hibernate.Exception.constraintViolationException:无法在org.hibernate.Exception.jdbcExceptionHelper.convert(sqlstateConverter.convert(sqlstateConverter.java:96)在org.hibernate.Exception.JDBC.exceptionHelper.convert(jdbcExceptionHelper.convert(jdbcExceptionHelper.java:66)在在org.hibernate.event.def.DefaultFlushEventListener.onflush(DefaultFlushEventListener.java:51),org.hibernate.impl.sessionImpl.flush(SessionImpl.java:1216),org.hibernate.impl.sessionImpl.managedFlushpdateException:在com.mysql.jdbc.preparedStatement.executeBatchSeryl(preparedStatement.java:1669)在org.hibernate.jdbc.preparedStatement.executeBatch(preparedStatement.java:1085)在org.hibernate.jdbc.batchingBatcher.doExecuteBatch(batchingBatcher.java:70)在org.hibernate.jdbc.abstractBatcher.executeBatch(
@Entity
public class UserDetails {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int userID;
@OneToMany
private List<vehicle> vehi = new ArrayList<vehicle>();
public List<vehicle> getVehi() {
return vehi;
}
public void setVehi(List<vehicle> vehi) {
this.vehi = vehi;
}
public int getUserID() {
return userID;
}
public void setUserID(int userID) {
this.userID = userID;
}
private String userName;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
@Entity
public class vehicle {
@Id
@GeneratedValue
private int vehiID;
public int getVehiID() {
return vehiID;
}
public void setVehiID(int vehiID) {
this.vehiID = vehiID;
}
public String getVehiName() {
return vehiName;
}
public void setVehiName(String vehiName) {
this.vehiName = vehiName;
}
private String vehiName;
}
public class UserTest {
public static void main(String[] args) {
vehicle veh1 = new vehicle();
veh1.setVehiName("car");
vehicle veh2 = new vehicle();
veh2.setVehiName("bus");
UserDetails user1 = new UserDetails();
UserDetails user2 = new UserDetails();
user1.setUserName("user2");
user2.setUserName("user2");
UserDetails user3 = new UserDetails();
user3.setUserName("user3");
user1.getVehi().add(veh1);
user2.getVehi().add(veh2);
user3.getVehi().add(veh1);
SessionFactory sf = new Configuration().configure().buildSessionFactory();
Session ss = sf.openSession();
ss.beginTransaction();
ss.save(user1);
ss.save(user2);
ss.save(user3);
ss.save(veh1);
ss.save(veh2);
ss.getTransaction().commit();
ss.close();
}
}
错误消息很清楚:有一个唯一的密钥冲突约束:您为两个不同的用户插入了相同的车辆:
user1.getVehi().add(veh1);
//...
user3.getVehi().add(veh1);
这是不正确的,因为用户和车辆之间的关联是一个OneToMany关联。因此,给定的车辆只属于一个用户。如果您希望在用户之间共享一个交通工具,那么您需要一个ManyToMany关联,并且您需要删除userdetails_vehicle.vehi_vehiid
on上的唯一约束(如果您使用它来生成模式,Hibernate不会创建它)
我刚开始hibernate编程,请帮我一下,我在执行下面的文件时遇到了问题。我使用的是MySQL数据库。我的错误是 SLF4J:无法加载类“org.slf4j.impl.StaticloggerBinder”。slf4j:默认为无操作(NOP)记录器实现slf4j:请参阅http://www.slf4j.org/codes.html#staticloggerbinder了解更多详细信息。Hiber
问题内容: 对于Java-JDBC API和Oracle数据库,我有一个稍微独特的要求。我将autoCommit设置为默认值,这对于Oracle是正确的,并且我使用的示例与此链接相似。 但是,当我添加说1000批次时,可以说每个批次都是插入的。并且让我们假设大约20条记录违反了某些约束,我希望其余980条变为COMMITTED(并且以后对使用任何其他连接的任何其他查询都可见)到数据库,并忽略20条
我得到以下错误,当我尝试添加一个应用程序和应用程序设置。以下是详细的错误消息: 下面是junit测试 这是保存应用程序和设置的方法 这些是DAO类。 这是应用刀 为什么我会得到上面的错误?如果你们需要更多的信息,请告诉我。 更新
您好,我是Spring batch的新手,我遇到了以下无法解决的异常: 此处为我的代码: 我可以通过添加
我正在尝试编译一个测试。avsc和avro模式文件转换为java代码。线程“main”org.apache.avro中出现异常。SchemaParseException:无法重新定义:test.record4 这个想法是record4应该在name4和name5中具有相同的类型 我的test.avsc是:
在调用shutdown方法后,这些线程是否会被杀死。我不是java开发人员。我做了一些研发。但我不成功。