gpt4 book ai didi

java - ORACLE: org.hibernate.ObjectNotFoundException: 不存在具有给定标识符的行

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:08:06 27 4
gpt4 key购买 nike

我正在为我的应用程序使用 Hibernate(3.0) + Oracle DB (10g)。

我的域对象就像 PluginConfig.java

@Entity
@Table(name = "plugin_config" , schema = "test")
@org.hibernate.annotations.Cache(usage =org.hibernate.annotations.CacheConcurrencyStrategy.READ_WRITE)
public class Config {

private static final long serialVersionUID = -1959019321092627830L;

/** This object's id */
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
protected long id;

@OneToOne
@JoinColumn(name = "plugin_id")
private Plugin plugin;

@Column(name = "config_name")
@NaturalId(mutable = true)
private String name;

@Column(name = "config_desc")
private String description;

另一个领域对象Plugin.java

@Entity
@Table(name = "plugin", schema = "test")
@org.hibernate.annotations.Cache(usage = org.hibernate.annotations.CacheConcurrencyStrategy.READ_WRITE)
public class Plugin implements Serializable {

private static final long serialVersionUID = 5694761325202724778L;

/** This object's id */
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
protected long id;

@Column(name = "plugin_name")
@NaturalId
private String pluginName;
@OneToOne
@JoinColumn(name = "plugin_config_id")
private PluginConfig pluginConfig;

@Column(name = "plugin_desc")
private String description;

每当我尝试通过我的数据库服务方法加载插件时(使用@Transactional 注释,因此它也加载它的所有子项)我得到以下错误

org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [PluginConfig#53]

plugin_config 表中实际上没有 id = 53 的行。也没有插件表条目有 plugin_config_id=53

那么 hibernate 从哪里选取这些值呢?我在这里注意到一件事,值“53”实际上是 plugin_config 表中应该被引用的行号。

见下图:

enter image description here

这是我的查询应该查找的插件配置。但它会尝试使用标识符 #53(行号:)而不是 #95(主键“id”的值)来搜索它。

我哪里会出错?

最佳答案

我不知道这是否是最好的解决方案,但你可以使用 @NotFound 注释和 IGNORE 命令让 Hibernate 丢弃异常并设置 pluginConfig null

@OneToOne
@JoinColumn(name = "plugin_config_id")
@NotFound(action = NotFoundAction.IGNORE)
private PluginConfig pluginConfig;

关于java - ORACLE: org.hibernate.ObjectNotFoundException: 不存在具有给定标识符的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18430066/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com