- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 hibernate 新手,学习 doc 保存持久对象
已关注 hibernate doc这是人和电话的一对多关系
@Entity
@Table(name = "phone")
public class Phone {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@Column(name = "number")
private String number;
@ManyToOne(fetch = FetchType.LAZY)
private Person person;
//omit setter and getter
}
@Entity
@Table(name = "person")
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
private String username;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "person")
private List<Phone> phones = new ArrayList<>();
//omit getter and setter
}
我是个执着的人,加一个电话就报错
@Test
public void say() {
Person person = new Person();
person.setUsername("aaaa");
Phone phone = new Phone();
phone.setNumber("111");
person.getPhones().add(phone);
personService.save(person);
}
这是道的执着
public class PersonDaoImpl implements PersonDao {
@PersistenceContext
private EntityManager entityManager;
@Override
public void save(Person person) {
entityManager.persist(person);
}
更新服务代码,服务只是救人
@Service(value = "personService")
public class PersonServiceImpl implements PersonService {
@Autowired
private PersonDao personDao;
@Transactional
@Override
public void save(Person person) {
personDao.save(person);
}
}
错误信息:
23:35:47.059 [main] DEBUG org.hibernate.engine.spi.ActionQueue - Executing identity-insert immediately
23:35:47.062 [main] DEBUG org.hibernate.SQL -
insert
into
phone
(number, person_id)
values
(?, ?)
23:35:47.297 [main] DEBUG org.hibernate.engine.jdbc.spi.SqlExceptionHelper - could not execute statement [n/a]
java.sql.SQLIntegrityConstraintViolationException: Column 'person_id' cannot be null
最佳答案
添加 @GeneratedValue
注释以指定两个实体的主键将在您的代码之外填充。
@Entity
@Table(name = "phone")
public class Phone {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private long id;
@Column(name = "number")
private String number;
@JoinColumn("person_id")
@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private Person person;
//omit setter and getter
}
public class Person {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private long id;
private String username;
@OneToMany(mappedBy = "person")
private List<Phone> phones = new ArrayList<>();
//omit getter and setter
}
此外,您需要保留Person
对象而不是Phone
对象,因为没有配置从Phone
到 的级联人
。如果您不能这样做,请将 Person
上的 CascadeType
切换为 none,然后将级联放在 Phone
上,如上所示。
您还应该在 Phone
实体上添加一个 @JoinColumn
注释,以便 hibernate 知道外键列。
关于java - Hibernate一对多关系java.sql.SQLIntegrityConstraintViolationException : Column 'person_id' cannot be null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53449592/
这是今晚尝试让 JPA/Hibernate 在新项目中工作的第 43 个障碍。 当尝试创建并保留我的 Staffer 类时,我得到: SEVERE: Column 'Person_ID' cannot
在我的 Rails 应用程序中,我有这个模型: class Project :people_projects end 我不明白的是: 当我创建一个新项目时,为什么我的 person_ids 数组的开
我正在尝试使用 Django 编写一个简单的银行应用程序,但我遇到了一个奇怪的错误,缺少位置参数。任何帮助将非常感激。其他模板和 View 工作正常。当我转到登录页面时出现问题。 完整的错误是: Ty
我是 mysql 新手,正在使用在线服务器(MYSQL 版本 5.1.69),我有下表 CREATE TABLE `person_info` ( `id` int(11) NOT NULL AUT
有人可以将这个英语转换成 SQL 我已经尝试了几种方法但没有成功。 SELECT CASE WHEN COUNT(person_id) > 3 THEN person_id end FROM tabl
所以我发现mysql不支持使用像count(distinct(person_id))这样的聚合函数和窗口函数。例如,下面的查询将不起作用。 select count(distinct(person_i
我是 hibernate 新手,学习 doc 保存持久对象 已关注 hibernate doc这是人和电话的一对多关系 @Entity @Table(name = "phone") public cl
我知道这在 Django 圈子里似乎是一个被问得太多的问题,但我不敢说我还没有找到解决这个问题的方法。 我的模型 - from djago.... import User class InfoPe
我想创建一个列来标记员工,只要他们得到晋升(等级变化),如下例所示: +-----------+------------+------------+-------+------+ | PERSON_I
我有这样的数据: +----------+-----------+------------+------+ | group_id | person_id | is_primary | year | +
我是一名优秀的程序员,十分优秀!