にロング・フィールドを設定することはできません私はどこかに間違い...
1人のプレイヤーが1つの統計表(oneToOne)JPAはロング
クラスのプレーヤーを持っていることを想定していますがあることを推測しますクラス統計:
@Component
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@Table(name = "stats")
public class Stats implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
@JsonView(View.Summary.class)
@Column(name = "id")
private Long id;
@OneToOne
@JoinColumn(name = "player_uid", referencedColumnName = "uid", nullable = false)
@JsonView(View.Summary.class)
private Player player;
....
クラスPlayerDAO:
public interface JPAPlayerDAO extends JpaRepository<Player, Long> {
Player findByUid(Long uid);
Player findByName(String name);
}
私はこれを行う場合、それは大丈夫です:
Player p = new Player();
p.setUid(123L);
p.setName("Mike");
updater.saveOrUpdatePlayer(p);
p = playerDAO.findOne()
私は名前やUIDでそれを見つけるためにしようとすると、私はエラーを取得:
Player p = new Player();
p.setUid(123L);
p.setName("Mike");
updater.saveOrUpdatePlayer(p);
p = playerDAO.findByName("Mike")
or
p = playerDAO.findByUid(123L)
....
Caused by: org.hibernate.property.access.spi.PropertyAccessException: Error accessing field...
Caused by: java.lang.IllegalArgumentException: Can not set java.lang.Long field ...entities.Player.uid to java.lang.Long
私はそれはと間違って何かすることができることを考えます私のoneToOne参照。
refを削除すると統計からuid @JoinColumn(name = "player_uid"、referencedColumnName = "uid")はすべて正常に動作します。しかし、私はそれが必要です。 – IgorZ