我正在使用Spring JPA并希望将值设置为外键列。这里是我的实体和存储库。
@Entity
public class Device {
@NotEmpty
@Id
private String deviceId;
@ManyToOne
@JoinColumn(name="userId", referencedColumnName="userId", insertable=false, updatable=false)
@NotFound(action=NotFoundAction.IGNORE)
private User user;
//Getters and setters
}
@Entity
public class User(){
@Id
private String userId;
private String userName;
//Getters and setters
}
public interface DeviceRepository extends PagingAndSortingRepository {
}
public class DeviceServiceImpl implements DeviceService {
@Autowired
private DeviceRepository devRepos;
@Autowired
private UserRepository userRepos;
@Override
public void saveDevice(Device device, String userId) {
User user = null;
if (userId!=null) {
user = userRepos.findOne(userid);
device.setUser(user);
}
deviceRepos.save(device);
}
}
该用户存在于Device表中,但表中的userId列未设置该值。请帮我解决这个问题。
那么,这意味着无论何时保存设备,我都必须从user表中获取设备的user?
由于您将device
类中的user
属性的insertable and updatable设置为false
,因此在生成SQL INSERT和UPDATE语句时,这将导致持久性提供程序忽略此列(device.userid
)。
只需将它们更改为true
或删除它们,因为它们的默认值已经为true。
更新:
在纯JPA中,如果知道用户的ID,就可以使用EntityManager#getReference(user.class,aUserId)获得一个用户实例,而不需要实际从DB查询。但在Spring Data JPA中,似乎不支持这种方法。
如果我继续尝试持久化这个实体,我将得到中持久化。 做这件事的正确方法是什么。可能是我理解的不对。
问题内容: 我想知道如何在Swing界面中调整Tab顺序。我找到了一个示例,它表明此方法可以解决问题,但似乎已弃用且不起作用。 注意:-下面的方法返回一个带有Argument名称的Combox对象。如果有人知道如何使用Netbeans IDE做到这一点,那就太好了。我在Eclipse WindowBuilder中找到了一种方法,但在Netbeans IDE中却找不到。谢谢。 问题答案: 您可以在容
我需要创建3个如下所示的表 学生(SID:CHAR(12),SNAME:VARCHAR(50),BDATE:日期,地址:VARCHAR(50),SCITY:VARCHAR(20),年份:CHAR(20),GPA:FLOAT) 公司(CID:CHAR(8),CNAME:VARCHAR(20)) 应用(SID:CHAR(12),CID:CHAR(8)) (粗体属性为主键) 但是我不确定如何设置外键,因
问题内容: 我在一个新的iOS Swift项目中使用Realm。我将Xcode 6.0.1与iOS SDK 8.0和Realm 0.85.0一起使用 我正在尝试使用新的Realm主键功能,以便可以进行操作。 这是一个示例模型: 以及我如何尝试添加/更新新对象: 我收到此错误: RLMExecption’,原因:“ Foo”没有主键,无法更新 这是主键上的文档。我可能没有正确设置它: http :
如何在同一个字母中设置助记符解析。在我的项目中,在button中设置助记符,但button<code>setText</code>在每个事件操作中都会发生变化,但在<code>_o</code>中助记符是相同的,但短键只在一个事件中起作用。如何解决这个问题 抱歉,我的< code >英语
我在一个新的iOS Swift项目中使用Realm。我使用Xcode 6.0.1和iOS SDK 8.0和Realm0.85.0 我正在尝试使用新的Realm主键特性,以便可以执行。 下面是一个示例模型: 以下是主键上的文档。我可能没有正确设置: <罢工> http://realm.io/docs/cocoa/0.85.0/api/classes/rlmobject.html#//api/name