我有一个问题,我无法坚持或合并只包含一个ID和其他对象的集合的对象。如果我添加另一个字段,它将正常提交事务。另外,如果我将ID生成策略更改为AUTO,它也会起作用。如何坚持仅包含集合和ID的实体?
我的团队其余人员使用“IDENTITY”而不是“AUTO”,所以我想与他们保持一致。他们的实体不仅仅是一个ID +集合,所以它对他们来说工作得很好。以下是我想要做什么工作:
@Entity
public class Filter implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@OneToMany(fetch = FetchType.EAGER, orphanRemoval = true, cascade = { CascadeType.ALL })
private ArrayList<Rule> rules = new ArrayList<>();
public Filter() {
}
}
的ErrorMessage:
org.apache.openjpa.persistence.PersistenceException: ERROR: syntax error at or near ")"
Position: 25 {prepstmnt 693640431 INSERT INTO Filter() VALUES()} [code=0, state=42601]
FailedObject: [email protected]
本质,因为它只是一个ID和一个连接表,它试图持续存在或合并过滤器时死亡没有任何领域。
解决办法
变化GenerationType.IDENTITY到GenerationType.AUTO。
-The只有CON似乎是最初开始主键到50跳来跳去,然后它开始由1
变化GenerationType递增到表
- 这似乎正是AUTO采摘。
向实体添加一个任意字段(即String test = “test”)。
- 简单地使实体有一个字段使其坚持。但是,我并不需要这个领域;我只想要一个集合
使双向关系成为可能。
- 由于双向关系,表格有一个id返回(而不仅仅是一个id)。这仅适用于Filter由另一个记录拥有。
如果您的JPA提供程序不支持有没有列的INSERT语句,然后提出一个BUG。我用我使用的提供程序(DataNucleus)执行此操作,并生成正确的SQL。 –
使用AUTO并不是真正的答案,因为AUTO意味着将其留给提供者使用什么策略,并且他们可能只是在封面下使用IDENTITY而最终导致相同的问题。 –
已从作者中删除 – garfield