当我在Hibernate中测试@OneToOne的映射关系的一些东西时,我使用spring-data-jpa进行查询。对于@OneToOne的双向关系,当我查询一个实体时,会出现两种情况:
接下来的相关代码:
@Entity
public class Person {
@Id
@GeneratedValue
private Integer personId;
private String name;
@OneToOne
private IdCard idCard;
// setter&getter
}
@Entity
public class IdCard {
@Id
@GeneratedValue
private Integer number;
private String area;
@OneToOne(mappedBy="idCard")
private Person person;
}
佩尔松道:
@Transactional
@Repository
public interface PersonDao extends CrudRepository<Person, Integer> {
public Person findByPersonId(Integer personId);
}
身份证道:
@Transactional
@Repository
public interface IdCardDao extends CrudRepository<IdCard, Integer> {
public IdCard findByNumber (Integer number);
}
测试代码:
Person person = personDao.findByPersonId(1);
System.out.println(person);
IdCard idCard = idCardDao.findByNumber(123);
System.out.println(idCard);
我在网站上搜索了一些答案,找到了一个相关的问题,StackOverFlowError,同时使用JPA 2.0在GAE数据存储中进行一对一的关系
但是我没有显式地实例化实体,所以没有递归。使用jpa 2.1有什么解决方案吗?
试着这样,你可以用一端绘制地图。,对于接收端的一对一和多对一,你不需要提及,
@Entity
public class Person {
@Id
@GeneratedValue
private Integer personId;
private String name;
@OneToOne
private IdCard idCard;
// setter&getter
}
@Entity
public class IdCard {
@Id
@GeneratedValue
private Integer number;
private String area;
private Person person;
}
我在@OneToOne
关系中遇到了同样的问题,java.lang.StackOverflow Error: null
的解决方案是在关系的欠款方使用fetch LAZY。
@Entity
public class Person {
@Id
@GeneratedValue
private Integer personId;
private String name;
@OneToOne (fetch = FetchType.LAZY)
private IdCard idCard;
// setter&getter
}
@Entity
public class IdCard {
@Id
@GeneratedValue
private Integer number;
private String area;
@OneToOne(mappedBy="idCard")
private Person person;
}
问题内容: 它是有效申报,并在关系的双方,如: 我找不到任何表明这是无效的信息,但似乎在持久性过程中,至少必须违反关系的一侧。(例如,如果首先写入changeEntry,则changeEntryDetails临时为null)。 尝试此操作时,我看到抛出了异常。 我想避免在可能的情况下放宽约束,因为双方都 必须 存在。 问题答案: 声明并在关系的两边是否合法(…)我找不到任何表明无效的内容,但是在持
假设我有一个名为的表,其字段为,和和,其字段为和。和表与列之间存在外键关系。 如果我在类中执行多对一注释映射,如何确保Hibernate使用LEFT OUTER JOIN加入关联实体?
我正在我的项目中使用Hibernate,并使用如下所示的“查询”。 我得到结果了。当我使用下面这样的泛型时 得到结果是因为“?”是通配符(或),它将接受任何数据类型 当我使用下面的代码时,会出现一些错误(java.lang.IllegalArgumentException:Update/Delete queries Count be typed)。我使用整数数据类型,因为createQuery在执
我不熟悉hibernate,了解了HCQL(hibernate Criteria查询语言),并尝试运行下面的代码,但收到警告——“来自类型SharedSessionContract的方法createCriteria(Class)已被弃用” 所以我在谷歌上搜索并尝试了下面的代码,但现在在myCriteria.add(nameCriteria)方法中出现错误-'方法add(CriteriaQuery)
问题内容: 我看不到“多对一”关系与“一对一”关系的架构有什么区别: 与 有什么区别吗? 问题答案: 它们在架构上看起来完全相同,但是在Hibernate Layer上有所不同。 如果尝试这样的操作: 一切都会好起来的。但是,保存后,如果您尝试获取订单: 当然,在两种情况下,您的Address类应该看起来有所不同。