- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我找不到我的代码中的错误。寻求帮助。为什么方法 findById()
没有返回具有此 ID 的此类对象,但 findAll()
显示具有此 ID 的对象?
这是我的用户类
:
@Entity
@Table(name = "users")
public class User {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "login")
private String login;
@Column(name = "password")
private String password;
@JsonIgnore
@OneToOne(optional = false, mappedBy = "user")
private UserDetails userDetails;
}
我的 类 UserDetails
:
@Entity
@Table(name = "userdetails")
public class UserDetails {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "name")
private String name;
@Column(name = "surname")
private String surname;
@OneToOne(optional = false, cascade = CascadeType.ALL)
@JoinColumn(name = "user_id")
private User user;
}
我的 Controller :
@RestController
public class AnotherUserController {
private final UserRepository userRepository;
@Autowired
public AnotherUserController(UserRepository userRepository) {
this.userRepository = userRepository;
}
@GetMapping("/demo/{id}")
public User findById(@PathVariable("id") Long id) {
return userRepository.findById(id).orElseThrow(() -> new RuntimeException("user not found: " + id));
}
@PostMapping("/demo")
public User save(@RequestBody User user) {
return userRepository.save(user);
}
@GetMapping("/demo")
public Iterable<User> save() {
return userRepository.findAll();
}
}
我的仓库:
public interface UserRepository extends CrudRepository<User, Long> {
}
和日志:
2020-07-05 22:11:30.642 ERROR 13200 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception
[Request processing failed; nested exception is java.lang.RuntimeException: user not found: 23] with root cause
java.lang.RuntimeException: user not found: 23
...
..
.
最佳答案
好的,所以你有 @OneToOne(optional = false)
关系,正如你在评论中所说,这个字段是一个问题。按 id 查找不会返回用户,因为 hibernate 会inner join
到 userdetails
,并且由于没有匹配的记录 - 没有结果。
因此解决方法很简单:如果您希望用户返回,即使他们与详细信息无关 - 将关系标记为可选 - @OneToOne(optional = true)
。 Hibernate 然后将生成 left outer join
而不是 inner join
。
如果关系不是可选的(从业务的角度来看),那么您不应该允许存在没有详细信息的用户这种情况发生。在数据库级别进行检查是最好的(非空外键等)。
顺便说一句,findAll
返回结果,因为它转换为 select * from users
(无连接),然后在需要时延迟获取详细信息
关于java - 为什么 findById 响应未找到 id 但 findAll 返回具有此 id 的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62745294/
如何通过特定条件获取值,然后使用这些选定元素从其他事实系列中获取值? 我有这个代码 %code, date, amount values1('AAA', date(02, 03, 2020), 100
我是 Python 的新手,主要需要它来从网站获取信息。在这里,我试图从网站底部获取简短的标题,但无法完全获取。 from bfs4 import BeautifulSoup import reque
我不断收到错误“缺少 1 个必需的位置参数:'section_url'” 每次我尝试使用 findall 时都会收到此错误。 刚开始学习 python,因此我们将不胜感激! from bs4 impo
我有这张 table 。客户有项目,用户在项目中工作 Clients - id - name Projects - id - name - client_id Users - id - name Us
嗨,我是 Python 和 Beautiful 汤的新手。我试图仅从表格的某个部分获取文本。但似乎 findAll 的结果不是我可以再次运行 findAll 的 BeautifulSoup 类型。 s
登录 @ApiModel @Entity public class Login { @Id @GeneratedValue(strategy = GenerationType.AUTO
登录 @ApiModel @Entity public class Login { @Id @GeneratedValue(strategy = GenerationType.AUTO
有什么方法可以防止 Spring Data REST 为覆盖的存储库方法创建/search URL? 例如,以下代码会生成一个/search/findAll URL,它复制了集合资源的功能: publ
有什么方法可以防止 Spring Data REST 为覆盖的存储库方法创建/search URL? 例如,以下代码会生成一个/search/findAll URL,它复制了集合资源的功能: publ
使用 Spring Data JpaRepository 可以通过某种排序获取给定 Id 的选择集合。这意味着我需要启用以下查询。我找到了一些 solution应用@NamedQuery 但我无法启用
我正在尝试在我的 Express 应用程序中使用 Sequelize 获取数据,并使用 MSSQL 获取数据库。这是我的代码: getInstitution: function (req, res)
代码应该在请求/tasks 时返回一个带有空任务的 JSON 对象,而是返回一条消息错误 - TypeError: cannot read property 'findAll' of undefine
我的python版本是2.7.6 我知道 +? 是 + 的非贪婪版本。 这样 re.findall('(ab)+?', 'abab') 将匹配尽可能少的 ab。 结果 ['ab', 'ab'] 因此有
我正在使用 sequelize 从 mySql db 获取数据。这就是我如何使用它 const isProduct = await models.product.findAll({ where:
ItemTag对象包含一个Item对象和一个Tag对象。 (这些是Java域对象。) 这个简单的查询按预期工作。我返回一个ItemTags列表,并且可以完成ItemTags应该做的所有奇妙的事情: d
试图简单地使用find all运行域对象的查询,并且它的行为不像我期望的那样: searchResults = Contact.findAll("from Contact as c where c.c
我想使用 groovy findAll 和我的参数来过滤闭包 filterClosure = { it, param -> it.getParam == param } 我现在如何在 findAl
我扩展了 CrudRepository 来创建一个名为 TaskDao 的类。我认为 taskDao.findall() 会从数据库中提取值。由于某种原因,taskDao.findall() 实际上返
我正在开发一个 grails 应用程序,在此我必须在 list.gsp 上应用过滤器框。当我使用以下查询(在我的服务中)进行过滤时,我得到了分页列表: def clientCriteria =
我正在尝试创建一个正则表达式来查找 Perl 代码中的所有变量。 变量如下所示:$variable_test。 所以这是我使用的正则表达式: ^\$\w+$ 这给了我Python中的这一行: matc
我是一名优秀的程序员,十分优秀!