我在后端应用程序中定义了一些实体,它们有两个@manytone和@OneToMany关系,但在psequel中每次执行一个实体时,每个外键和主键关系都会创建额外的结构。我在执行时看到这个异常,我不知道如何恢复
HiberNate:创建表user_locations(user_idint4不为空,locations_idint4不为空)HiberNate:更改表(如果存在)location_user_id添加约束FKfsq9me9k3dj93oujbfgplkfrx外键(user_id_id)引用用户2019-04-08 15:18:29.001WARN 2023 --- [ main]o. h. t. s. i. ExceptionHandlerLoggedImpl: GenerationTarget遇到异常接受命令:执行DDL“更改表(如果存在)时出错location_user_id通过JDBC语句添加约束FKfsq9me9k3dj93oujbfgplkfrx外键(user_id_id)引用用户”
org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "alter table if exists location_user_id add constraint
FKfsq9me9k3dj93oujbfgplkfrx外键(用户id)通过JDBC语句引用“用户”
以下是我的用户表的外观:
@Entity
public class User {
private String gmailToken;
private String emailAddress;
@Id
private int Id;
@ManyToMany
private List<Location> locations;
}
位置实体看起来像这样:
@Entity
public class Location {
private String name;
private String country;
private String countryCode;
private Point geoCordinates;
private double googleRating;
private String phoneNumber;
private ArrayList workingHours = new ArrayList<WorkingHours>();
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int Id;
@ManyToMany
private List<User> userId;
}
这里有什么我遗漏的吗。
编辑后添加:
我已将用户实体更改为如下所示:
public class User {
private String gmailToken;
private String emailAddress;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int Id;
@OneToMany(cascade=CascadeType.ALL)
@JoinColumn(name="USER_ID")
private List<Location> locations;
@OneToMany(cascade=CascadeType.ALL)
@JoinColumn(name="USER_ID")
private List<ReviewRequest> reviewRequests;
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name="USER_ID")
private List<Response> responseForRequests;
public User(String gmailToken){
this.gmailToken =gmailToken;
}
}
位置实体如下所示:
公共类位置{
private String name;
private String country;
private String countryCode;
private Point geoCordinates;
private double googleRating;
private String phoneNumber;
private ArrayList workingHours = new ArrayList<WorkingHours>();
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int Id;
@ManyToMany(mappedBy = "location")
private List<User> userId;
@OneToMany(mappedBy = "location")
private List<Customer> customerId;
@OneToMany(cascade=CascadeType.ALL)
@JoinColumn(name="LOCATION_ID")
private List<ReviewRequest> reviewId;
}
我仍然面临在给定的User表中创建单个表和创建外键列的问题。
看起来mappedBy和@JoinColumn似乎不正确?
1) 您应该在关系的拥有方指定@JoinTable
(除非您对hibernate命名默认值感到满意)
2) 通过在其中一个实体上添加mappedBy
来指定拥有方:
@ManyToMany
private List<Location> locations;
我观察到库函数,当它在循环中被调用一次时,它几乎总是产生正数。
我不明白为什么< code>gcc -S -m32会产生这些特定的代码行: C 代码: 它给出以下输出:
当我评论tx:annotation-drive时,一切都很好,但是带有@transactional注释的method不起作用。我做错了什么? 我的年级依赖关系:
问题内容: 今天早上,Maven开始抱怨此错误: 奇怪的是,我正在使用JDK 7,并且此代码已经构建了好几周了。我只是将m2e与默认POM一起使用,而未指定编译器版本。 这是我的Maven版本信息: 我可以这样使用Maven编译器插件解决它: 仍然,我想了解为什么Maven突然开始行为异常并需要使用编译器插件。 问题答案: 这很可能是环境问题,而不是Maven问题(即,您的JAVA_HOME环境变
在测试CRC实现时,我注意到0x01的CRC通常(?)似乎是多项式本身。然而,当试图手动进行二进制长除法时,我总是以丢失多项式的前导“1”告终,例如,当消息为“0x01”和多项式“0x1021”时,我将得到 通过查看https://en.wikipedia.org/wiki/computation_of_cyclic_redundancy_checks,我可以看到使用生成多项式离开移位寄存器的高位