表[machines]包含由多个物理列名称引用的物理列名[machine_id]:[machine_id],[machineId]。
它的原因似乎是因为我的实体关系:
@Entity(name = "lineups")
public class Lineup {
// ...
private long machineId;
@ManyToOne(..)
private Machine machine;
// ...
}
public class LineupDto {
// ...
private long machineId;
// ...
}
但是,如果我注释掉属性machineId
,一切都会按预期开始工作。但是,这意味着我的阵容DTO必须包含一个Machine对象,而不仅仅是machineId
。
我正在寻找一种方法,我可以让一个控制器接受Lineup
json对象与machineId
或Machine object
,但无法使其工作。
但是现在如果我必须发表评论machineId
,我就无法在Dto&之间轻松转换数据。实体。
我有办法同时拥有machineId和amp;机器属性?
答案 0 :(得分:1)
我建议将注释移到方法而不是字段,并将machineId标记为@Transient
,告诉hibernate忽略该特定属性而不是尝试持久化它。然后只需使getMachineId方法返回Machine对象的id。
@Entity(name = "lineups")
public class Lineup {
// ...
private long machineId;
private Machine machine;
// ...
@Transient
public long getMachineId() {
return machine.getId();
}
@ManyToOne(..)
public Machine getMachine() {
return machine;
}
}