执行此查询会引发异常:
userObject = (User) session.createQuery("FROM User U WHERE U.username = :userName")
.setParameter("userName", userName).uniqueResult();
@Entity
@Table(name = "users")
public class User implements Serializable {
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "structure_id")
private Structure structure;
@Entity
@Table(name = "structure")
public class Structure implements Serializable {
@OneToOne(mappedBy = "structure")
private User user;
一个User
只能有一个结构
,一个结构
可以有很多个User
s
CREATE TABLE `structure` (
`structure_id` int NOT NULL,
`nom_structure` varchar(255) DEFAULT NULL,
PRIMARY KEY (`structure_id`),
UNIQUE KEY `UK_irbn1likcfwrr1wckpjifcsv` (`nom_structure`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3
CREATE TABLE `users` (
`user_id` int NOT NULL,
`email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
`etat` int DEFAULT NULL,
`phone` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
`first_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
`last_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
`password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
`username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
`dateExpiration` date DEFAULT NULL,
`currentAccessDate` datetime(6) DEFAULT NULL,
`lastAccessDate` datetime(6) DEFAULT NULL,
`structure_id` int DEFAULT NULL,
PRIMARY KEY (`user_id`),
KEY `FK7qgxvgafv4ohh16kh0fgfm4b0` (`structure_id`),
CONSTRAINT `FK7qgxvgafv4ohh16kh0fgfm4b0` FOREIGN KEY (`structure_id`) REFERENCES `structure` (`structure_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3
javax.persistence.PersistenceException: org.hibernate.HibernateException: More than one row with the given identifier was found: 964, for class: com.myProject.helpdesk.models.Structure
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:154)
at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1542)
at org.hibernate.query.internal.AbstractProducedQuery.uniqueResult(AbstractProducedQuery.java:1575)
at com.myProject.helpdesk.dao.UserDao.validate(UserDao.java:50)
at com.myProject.helpdesk.controllers.Login.authenticate(Login.java:74)
at com.myProject.helpdesk.controllers.Login.doPost(Login.java:58)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.myProject.helpdesk.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:33)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:544)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:616)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:831)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1634)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:832)
我认为Structure类的注释映射是错误的,应该是:
@OneToMany(mappedBy = "structure")
private List<User> user;
而不是这个:
@OneToOne(mappedBy = "structure")
private User user;
我只需要在运行这个简单的select查询时返回一个用户
对象
userObject = (User) session.createQuery("FROM User U WHERE U.username = :userName")
.setParameter("userName", userName).uniqueResult();
任何帮助赞赏。
鉴于此
一个用户只能有一个结构,一个结构可以有多个用户
您确实应该考虑更改映射到@ OneToMany。
顺便说一下,尽量避免像这样的铸件:
userObject = (User) session.createQuery("FROM User U WHERE U.username = :userName")
.setParameter("userName", userName).uniqueResult();
相反,通过将预期的实体类作为第二个参数传递给Session::createQuery方法,将查询转换为TypedQuery,如下所示:
userObject = session.createQuery("FROM User U WHERE U.username = :userName", User.class)
.setParameter("userName", userName).uniqueResult();
我在我的spring boot应用程序中出现了这个错误。当我想调用这个存储库时,我遇到了这个错误 这是我的存储库: 这就是我称之为此方法的地方: 如何检查方法返回的结果?我调试了我的代码,但在断点它只是返回这个错误。 谢谢你的帮助。
我在使用spring数据从1对1关系btn表检索数据时遇到了一个问题。我已经回顾了平台上的几个解决方案,但奇怪的是,在问题首次出现之前,我已经实现了所有建议的解决方案。请帮助我找到我所缺少的东西,或是使对他人有用的解决方案对我无效的任何东西。 以下是这两个实体之间的关系 错误消息: 2021-12-23 15:02:42.116错误11144---[nio-8089-exec-5]o.a.c.c.
我有一个实体:与实体:之间的关系如下: QueryParameter实体: HtmlElement实体: 组件实体: 类型实体: 基本上,这里的关系意味着一个html元素有一个与其相关的组件。 现在,当我想要找到如下所示的所有组件时: 它给出了以下错误: 如果我运行生成的查询,它将返回3行,但这没有任何意义,因为Component有不同的html组件(input、select等),并且HtmlEl
在eclipse中调试时 退回申请。isEmpty()?空:应用程序。得到(0); 这些表达式被计算为 applications.is空()- 应用。获取(0)- 应用。大小()- 但在执行这一行之后,它的抛出错误 组织。冬眠HibernateeException:找到了多个具有给定标识符的行:263536, 即使它的大小显示为1,那么它为什么以及如何在执行后获得多行。
我正在开发EJB-JPA-JSF项目。但是我有一个问题。我得到这个查询的错误: 如何修复此错误
当我尝试使用findById()方法从数据库中获取单个记录时,或者当我尝试使用spring数据REST更新一篇文章时,我遇到了一个异常:找到了具有给定标识符的不止一行。 delete和findAll方法正常工作。 我已经检查了数据库,没有多个相同ID的记录。另外,id是数据库中的唯一键。我见过很多人有同样的错误,但这些人的问题是他们在哪里使用联接。我没有任何加入。 该实体: 存储库: 例外情况: