无法检索记录使用jpa库外键时为空

我面临一个问题,当我搜索一个实体及其与外键记录。 根据业务逻辑,我需要搜索实体——LookupRequest表帐户(与非空帐户id)和外键=“回调”(null)。

请注意账户id并不是唯一的(为简单起见我删除表中的其他参数,使其短)。 一旦我筛选记录,我必须更新LookupRequest。 回调foreignkey条目。 我无法外键为空时检索记录。

import javax.persistence.*;

@Entity
public class LookupRequest {

@Id
@GeneratedValue(strategy= GenerationType.AUTO)
private Long id;

@Column
private String account;

@Column
private String caseId;

@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY, optional = true)
@JoinColumn(name = "id", unique=false, nullable=true, updatable=true)
private Callback callback;

public LookupRequest(String account, String caseId) {
this.account = account;
this.caseId = caseId;
callback = null;
}

public Long getId() {
return id;
}

public String getAccount() {
return account;
}

public String getCaseId() {
return caseId;
}

public Callback getCallback() {
return callback;
}

public void setCallback(Callback callback) {
this.callback = callback;
}

}

@Repository
public interface LookupRequestRepository extends JpaRepository<LookupRequest, Long> {
@Query("SELECT lr from LookupRequest lr where lr.account = :account and lr.callback = :callback")
LookupRequest findCaseId(@Param("account") String account, @Param("callback") String callback);
}

@Getterbr/>@Setter
@Entity
public class Callback {

@Id
@GeneratedValue(strategy= GenerationType.AUTO)
public Long id;

@Column(length = 20000)
private String rawResponse;

public Long getId() {
    return id;
}

public void setId(Long id) {
    this.id = id;
}

public void setRawResponse(String rawResponse) {
    this.rawResponse = rawResponse;
}

}
然后我打电话如下:

LookupRequest lookupRequestFromDB = lookupRequestRepository.findCaseId("ABC", null);
什么错了吗?

无法检索记录使用jpa库外键时为空

原文地址:http://blog.51cto.com/14021402/2331574

时间: 2024-11-10 13:02:25

无法检索记录使用jpa库外键时为空的相关文章

Navicat设置外键时出现1452错误

admin表中有字段admin_name和admin_realname.notice表中有字段admin_name.之前,notice表中admin_name的外键是admin表的admin_name,现在想改成admin_realname,数据类型和字段长度都一样,但却提示1452错误,如下图所示. 然后百度了一下,得到了一个靠谱的答案: 这是因为表设置了外键约束,而你试图插入一条外键字段所在表纪录不存在的一个值,就会报1452错.比如a.b两表,a表外键id值来自b表的ID.当你在a表中插入

MySQL里创建外键时错误的解决

--MySQL里创建外键时错误的解决--------------------------------2014/04/30在MySQL里创建外键时(Alter table xxx add constraint fk_xxx foreign key),提示错误,但只提示很简单的信息:ERROR 1005 (HY000): Can't create table '.\env_mon\#sql-698_6.frm' (errno: 150).根本起不到解决问题的作用.要看错误的详细提示,可以使用命令:(

EntityFramework Model有外键时,Json提示循环引用 解决方法

正文之前先说两句,距离上篇博客已将近两个月,这方面的学习和探索并没有停止,而是前进道路上遇上了各种各样的问题,需要不断的整理.反思和优化,这段时间的成果,将在最近陆续整理发出来. 个人感觉国内心态太浮躁了,很少有能深入研究下去并将自己经验分享的人,可能很忙,也可能嫌麻烦.特别是面向新技术,尤其是在学习资料有限的情况下,愿意花费时间摸索和分享的人实在太少太少,遇到问题,搜索结果一抓一大把,但是往往都是转载,连最起码的自己验证都没有,结果就是以讹传讹,不仅对解决问题无用,反而容易产生误导.最近这段时

【第三章】字段约束:数据完整性、主键、外键、非空、默认值、自增、唯一性

一.表完整性约束 作用:用于保证数据的完整性和一致性==============================================================约束条件  说明PRIMARY KEY (PK)    标识该字段为该表的主键,可以唯一的标识记录,不可以为空 UNIQUE + NOT NULLFOREIGN KEY (FK)  标识该字段为该表的外键,实现表与表(父表主键/子表1外键/子表2外键)之间的关联NOT NULL 标识该字段不能为空UNIQUE KEY (U

thinkphp 模型有外键时的添加和查询

1.模型要继承RelationModel,定义关联关系 class MessageModel extends RelationModel{ protected $_link = array( 'user' =>array( 'mapping_type'  => self::BELONGS_TO, 'class_name'    => 'User', 'foreign_key'   => 'user_id', 'mapping_name'  => 'user', ), ); }

数据库中有外键时JavaBean的写法

当写表和实体类之间映射的时候,一旦出现外键,要通过外键找到另外一个类,一旦出现外键必须写成类型private Address address;person表 public class Person { private String pid; private String pname; private int age; private Address address; public Address getAddress() { return address; } public void setAd

解决code first Migration 增加外键时出现错误的问题

先上模型 Comment public class Comment { [Key] public int CommentId { get; set; } [Required] public int Star { get; set; } [Required] public string Content { get; set; } [Required] [MaxLength(30)] public string ProductName { get; set; } [Required] [Foreig

mysql 创建外键时发生错误的原因和解决方法

可以去网上查看错误号,就能知道到底哪里出错了 https://zhidao.baidu.com/question/359868536.html 这里1452对应的错误是因为建立外键的表中还有数据,所以外键建立失败,删除数据后再添加即可成功建立外键 原文地址:https://www.cnblogs.com/kinome/p/9051584.html

JPA 不生成外键

在用jpa这种orm框架时,有时我们实体对象存在关联关系,但实际的业务场景可能不需要用jpa来控制数据库创建数据表之间的关联约束,这时我们就需要消除掉数据库表与表之间的外键关联.但jpa在处理建立外键时存在一些问题,在stackoverflow上搜索了相关的jpa创建实体对象关联关系但不建立外键这一系列问题后,发现这个是jpa在处理外键时存在一定的bug,官方给出的答复是在hibernate 5.x会解决掉这个问题,但是经验证5.x的版本这个问题依旧存在.下面给出这个问题的解释以及这个问题如何解