我有一个具有唯一id UID的表条目。第二个表程序,ID列作为键,程序列表UID外键引用条目中的UID。我没有创建名称,这是我试图维护的遗留代码。
@Entity(name="entry")
public class Entry {
@Id
public int uid;
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name="program_list_uid", referencedColumnName="uid")
public List<Program> programList;
...
}
@Entity(name="program")
public class Program {
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
public int id;
@Column(length=150,name="program_name")
public String programName;
@Column(name="program_list_uid")
public Integer entryId = 0;
}
当试图保存条目Ebean.save(条目)
时,我得到一个异常
ERROR执行DML bindLog[]错误[[SQL0121]重复的名称PROGRAM_LIST_UID不允许...
跟踪显示insert语句确实指定了两次program\u list\u uid
:
insert into program (program_list_uid, program_name, program_list_uid)
values (?,?,?)
我找到的唯一方法是从Program
中删除entryId
。然而,此属性在代码的其他地方使用。
解决方案是将insertable=false,updateable=false
添加到entryId
上的@Column
注释中。如何从JPA manytone映射中检索外键而不命中目标表?
@Entity(name="program")
public class Program {
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
public int id;
@Column(length=150,name="program_name")
public String programName;
@Column(name="program_list_uid", insertable = false, updatable = false)
public Integer entryId = 0;
}
我有一出戏!使用ebean进行模型管理的框架项目。我有4个模型,A B C D. A和B是oneTo多,B和C是OneTo多,B和D是One To多。现在我想要一个与所有相关的B C D链接的A列表。 我现在拥有的是 但是性能非常差,根据sql日志,sql查询没有按照我的要求进行连接。是否有任何方法可以对所有这些对象使用查询联接?(即,选择包含4个查询的所有A B C D,并在本地连接它们,而不是
我有一个实体,它与
我试图@JoinColumn两个实体,分别命名为Customer和Account。一个客户可以有多个帐户,所以我认为在customer实体中使用@onetomany是正确的。和帐户实体中的@manytoone。但是,它总是在控制台中给我重复的列名。可以通过更改变量名来解决这个问题,但我不能简单地更改它,因为hibernate在DB中找不到列名。即使添加@column name属性也行不通。 有什么
当我试图使用ebean缓存系统(带有io.ebean:ebean-redis)读取@ManyTomany关系时,我遇到了一个异常。这是一个springboot应用程序。 我正在使用的版本: SpringBootVersion=2.4.3 MariaDbVersion=2.7.2 EBeanVersion=12.7.2 Flywayversion=7.7.0 BaseModel Java类: 文章J
我想在(您可以将其视为Student)实体和实体之间实现一个@ManyTomany单向的。很简单,一个教室可以有很多学生,而学生可以有很多教室。我希望它是单向的,因为我希望班级只知道它包含什么学生,学生不必知道他们有什么班级。这就是我目前所拥有的: ClassRoom.java Account.java 我通过以下代码保存它(使用Spring JPA): 但我得到了以下错误: 下面是StackTr
问题内容: 假设我有两个实体: 然后,我要保留“客户”实体,然后,参照先前添加的“客户”保留“订单”实体。当我从数据库中检索此客户并调用getOrders时,它将返回空集。这是正常行为吗?如果是,当我添加新的Order实体时,我该怎么做以自动刷新此集合? 问题答案: Jpa不会为您维护关系,因此应用程序需要设置双向关系的两端,以使它们与数据库保持同步。当您设置了order-> customer关系