我有两张桌子,两张桌子之间有一对一的关系。
A表中的
@Entity
public class A implements GrantedAuthority {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer aId;
@NotEmpty
@Column(unique = true, nullable = false)
private String name;
@JsonIgnore
@OneToOne(mappedBy = "a", targetEntity = B.class, fetch = FetchType.LAZY)
private B b;
getter and setter
用户表:
@Entity
@Table
public class B {
@Id
@GeneratedValue(generator = "uuid2")
@GenericGenerator(name = "uuid2", strategy = "uuid2")
@Column(columnDefinition = "VARCHAR(50)")
private String bUUId;
@Column(unique = true, columnDefinition = "VARCHAR(30)", nullable = false)
private String name;
@Column(columnDefinition = "VARCHAR(50)", nullable = false)
private String x;
@JsonIgnore
@OneToOne(targetEntity = A.class, fetch = FetchType.EAGER)
@JoinColumn(name = "aId", referencedColumnName = "aId")
private A a;
//don't save this value into DB
@Transient
private Set<A> aSet;
我称之为询问
@Override
public B findByBname(String name) {
String query = "FROM B b WHERE b.name = :name";
try {
return (B) entityManager.createQuery(query).setParameter("name",name).getSingleResult();
} catch (SecurityException | IllegalStateException | RollbackException e) {
LOGGER.info(e.getMessage());
和错误日志:
org.springframework.orm.jpa.JpaSystemException: More than one row with the given identifier was found: 3, for class: com.z.server.model.B; nested exception is org.hibernate.HibernateException: More than one row with the given identifier was found: 3, for class: com.z.server.model.B
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:310)
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:221)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:417)
at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:59)
at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:213)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:147)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
at com.sun.proxy.$Proxy86.findBBname(Unknown Source)
at com.z.server.controller.BController.findB(BController.java:64)
当我在数据库中有一个带有这个Bname的条目时,我得到了这个执行选项。
有人有什么想法吗
干杯
您正在调用getSingleResult()
,这意味着您的查询只需要一个结果:
FROM B b WHERE b.name = :name
似乎有多行在表的“名称”列下具有相同的值。
如果List对象返回多行,则可以调用getResultList()
来获取List对象。或者必须确保表中的数据不包含名称列下的重复值。
组织。冬眠HibernateeException:找到了多个具有给定标识符的行:578,用于类:com。冬眠查询表演坚持不懈模型百货商店 数据库没有标识符为578的重复存储行。使用SQL对其进行了检查: 它返回0条记录。 关于一、二的其他问题指出,问题可能与OneToOne映射本身有关。商店和员工实体具有OneToOne关系,我的映射如下: 工作人员: 商店: 如何修复它? 更新: 当查询被修改为
我有两个实体,由单向连接OneTo很多: 当我试图用汽车创造我的司机时,像这样 ENVERS创建: 驱动程序表中包含新驱动程序数据的行,//例如,ID=1 包含新车数据的CAR表中的一行,//例如,ID=3 修订实体表中的一行,//例如,ID=8 驱动程序中的一行\u AUD: 一辆车有两排: 所以当我试图修改ID=1的驱动程序时 我得到了HibernateException,因为有两行具有相同的
我在我的spring boot应用程序中出现了这个错误。当我想调用这个存储库时,我遇到了这个错误 这是我的存储库: 这就是我称之为此方法的地方: 如何检查方法返回的结果?我调试了我的代码,但在断点它只是返回这个错误。 谢谢你的帮助。
我有一个实体A,它与TempA实体有关系,如下所示: 然后在doInHibernate我称之为 然后我收到了错误。TempA是一个共享表,因此其他服务可以实际插入该表。我需要的是防止冬眠者称之为TempA。我能够阻止它与A进行左连接,但是,它仍然会导致这个错误。
我在使用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