有这两个类:
ddress.java:
@Embeddable
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class Address {
private String street;
private String city;
private String state;
private String pincode;
}
User.java:
@Entity
@Data
public class User {
@Id
private int id;
private String name;
@ElementCollection
private Set<Address> addresses = new HashSet<>();
}
演示应用程序。爪哇:
@Bean
CommandLineRunner dataLoader2(UserRepository userRepo){
return new CommandLineRunner() {
@Override
public void run(String... args) throws Exception {
User u = new User();
u.setName("Some random name");
Address a1 = Address.builder()
.street("First Street")
.city("first city")
.state("first state")
.pincode("100001")
.build();
Address a2 = Address.builder()
.street("Second Street")
.city("Second city")
.state("second state")
.pincode("200002")
.build();
u.setAddresses(new HashSet<>(Arrays.asList(a1, a2)));
userRepo.save(u);
}
};
}
运行时,如果失败,出现此错误:
GenerationTarget遇到异常接受命令:通过JDBC语句执行DDL“更改表user_addresses删除外键FKfm6x520mag23hvgr1oshaut8b”时出错
然而,最终的表格被创建:描述用户地址
:
+---------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+-------+
| user_id | int | NO | MUL | NULL | |
| city | varchar(255) | YES | | NULL | |
| pincode | varchar(255) | YES | | NULL | |
| state | varchar(255) | YES | | NULL | |
| street | varchar(255) | YES | | NULL | |
+---------+--------------+------+-----+---------+-------+
描述用户
:
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id | int | NO | PRI | NULL | |
| name | varchar(255) | YES | | NULL | |
+-------+--------------+------+-----+---------+-------+
为什么jdbc不能删除表user\u addresses
中的外键user\u id
?如何让jdbc做到这一点?
"USER"是MySQL中的保留字,这可能是问题的根本原因。请更改User
实体的名称,或向其添加@Table
注释,并定义不同的名称。
参考文件:
EventLicensetype.hbm.xml文件: 下面是EventInfo类。同样,在实际文件中有更多的字段,这只是重要的部分: 下面是EventLicenseType类 为什么它不能直接删除记录?为什么它要更新??我还尝试将代码更改为下面的代码,并得到相同的错误。 谁能帮我解决我缺少的东西,或者给我指明正确的方向?
我还在学习hibernate中的很多东西,以及如何处理hibernate中表与表之间的关系,所以在我的一个项目中,我面临着以下问题: 问题出在哪里? 我想做什么? 我正在尝试删除package实体,但不删除package表中引用的用户 我正在通过packageDAO对package实体调用delete
我在这里使用了多对一双向关系,一旦我被放入数据库,我就不能删除文件,如果我试图删除,我会遇到异常,无法删除或更新父行:外键约束失败。 这是我的另一个实体类... 嗨这是我的完整栈迹
我在表中添加了一列(下面的查询) 现在我想删除这个专栏(fk_job_id)。我尝试了这些查询,但它们给出了错误。 第一个Alter语句给出的错误为-(但该列存在)。 第二个Alter语句给出错误,因为-
我有父实体和一个方向作为具有关系的子实体。我尝试使用Hibernate查询删除超过一周的广告,但得到的结果是: com.mysql.jdbc.exceptions.jdbc4.mysqlintegrityConstraintViolationException:无法删除或更新父行:外键约束失败(.,constraint外键()引用() 用户: 筛选器: 广告: DAO删除方法:
在MySQL中,我想删除一个表。 我尝试了很多方法,但我总是得到一个错误,即不能删除名为的表。这是我得到的错误: #1217-无法删除或更新父行:外键约束失败 我怎么放下这张桌子?