我有两个 DTO:
@Entity
@Table( name = "USER" )
public class UserDto implements Serializable
{
@Id
@GeneratedValue( generator = "trigger_gen" )
@GenericGenerator( name = "trigger_gen", strategy = "path.TriggerAssignedIdentityGenerator" )
@Column( nullable = true, length = 14, name = "USER_ID" )
private Long userId;
@OneToMany( cascade =
{ CascadeType.ALL }, mappedBy = "userIdOwner" )
private Set< AdressDto > addresses;
//getters and setters
}
@Entity
@Table( name = "ADDRESS" )
public class AddressDto implements Serializable
{
@Id
@GeneratedValue( generator = "trigger_gen" )
@GenericGenerator( name = "trigger_gen", strategy = "path.TriggerAssignedIdentityGenerator" )
@Column( nullable = true, length = 14, name = "ADDRESS_ID" )
private Long addressId;
@Column( nullable = true, length = 14, name = "USER_ID", insertable = false, updatable = false )
private Long userId;
@ManyToOne( fetch = FetchType.LAZY )
@JoinColumn( name = "USER_ID", insertable = true, updatable = true )
private UserDto userIdOwner;
//getters and setters
}
我想做类似的事情:
AddressDto address = new AddressDto();
Set<AddressDto> addresses = Sets.newHashSet();
addresses.add(address);
UserDto user = new UserDto()
user.setAddresses(addresses);
session.persist(user);
但我有一个错误 ConstraintViolationException cannot set 'NULL' into addressId。我究竟做错了什么?我应该怎么做才能使它起作用?