我有2个类似于以下内容的JPA实体:
@Entity
class Customer {
@Id
@GeneratedValue
Long id
@OneToOne(cascade = CascadeType.ALL)
@PrimaryKeyJoinColumn
CustomerInformation customerInformation
}
@Entity
class CustomerInformation {
@Id
@OneToOne
@JoinColumn(name = "id")
Customer customer
String firstName
String lastName
}
我正在使用spring-data-jpa生成我的DAO层。虽然不是很有趣,但它是这样的:
public interface CustomerRepository extends CrudRepository<Customer, Long> {
}
@Transactional
public void createNewCustomer() {
Customer cust = new Customer();
CustomerInformation custInf = new CustomerInformation;
custInf.setCustomer(cust);
custInf.setFirstName("asdf");
custInf.setLastName("hjkl");
cust.setCustomerInformation(custInf);
customerRepository.save(cust);
}
@Transactional
public void updateExistingCustomer(Long userId) {
Customer foundCustomer = customerRepository.findOne(userId);
if (foundCustomer.getCustomerInformation() == null) {
CustomerInformation custInf = new CustomerInformation();
custInf.setCustomer(foundCustomer);
custInf.setFirstName("asdf");
custInf.setLastName("hjkl");
cust.setCustomerInformation(custInf);
customerRepository.save(foundCustomer);
}
}
Hibernate: insert into CustomerInformation (firstName, lastName, id) values (?, ?, ?)
Feb 1, 2013 7:40:12 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: 20000, SQLState: 23502
Feb 1, 2013 7:40:12 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: Column 'ID' cannot accept a NULL value.
您还应该将id
字段标记为生成的值,因此hibernate将为其提供一些值:
@Entity
class Customer {
@Id
@GeneratedValue // !!!
Long id
...
@Entity
class CustomerInformation {
@Id
@GeneratedValue // !!!
@OneToOne
@JoinColumn(name = "id")
Customer customer
...
假设我在前面有一个表单,它有常用的字段和下拉列表。在这些下拉列表中,用户可以选择一个选项,并且每个选项都链接到Spring data JPA中的一个实体; 下拉列表包含一些标签和对应实体的链接作为值。然后,这个值在POST-request中传递给我们希望创建的实体的PagingAndSorting存储库。 假设它是一个具有username的用户,并且他必须与其中一个办公室(也是一个实体)关联: 我
“对于实体,Id属性不能为null,因此需要将该类映射为ValueObject。如果是这样,Id属性将被视为常规属性,而不转到该对象的GlobalId。” 我的问题是: 如果Id为NULL,为什么不能将实体视为新的? null
问题内容: 我有一个具有以下结构的数据库: 当我尝试创建EntityProperty类时 我得到以下异常: 我知道JPA实体必须具有主键,但是由于无法控制的原因,我无法更改数据库架构。是否可以创建将与这样的数据库模式一起工作的JPA(hibernate)实体? 问题答案: 我猜您有一个组合键,其中的外键是。如果是这样,则可以按如下所示进行映射:
我有一个实体 我有这个错误
主要内容:JPA实体插入示例在JPA中,我们可以通过实体轻松地将数据插入到数据库中。 提供方法来插入数据记录。 JPA实体插入示例 在这里,我们将演示如何使用实现插入学生的记录。 创建一个JPA项目,其项目目录结构如下所示 - 这个例子包含以下步骤 - 第1步: 在包下创建一个名为StudentEntity.java的实体类,这个类包含以下几个属性:, 和 。 文件:StudentEntity.java 的代码如下 - 第2
这是我的pb。 我有一个实体游戏和一个实体控制台 这是一个多个关联。 为了提高性能,我在同一查询中加载游戏和控制台,如下所示: 当我使用