У меня есть три класса сущностей: PlayerData
, IpData
и TwinData
.И TwinData
, и IpData
ссылаются на PlayerData
с внешним ключом.
Вот код:
@DatabaseTable
public class PlayerData {
@DatabaseField(generatedId = true)
private int id;
@DatabaseField
private UUID uuid;
@ForeignCollectionField
private ForeignCollection<IpData> ips;
@ForeignCollectionField
private ForeignCollection<TwinData> twins;
// Getters and setters...
}
@DatabaseTable
public class IpData {
@DatabaseField(generatedId = true)
private int id;
@DatabaseField(foreign = true)
private PlayerData playerData;
@DatabaseField
private Date firstUsage;
@DatabaseField
private String address;
// Getters and setters...
}
@DatabaseTable
public class TwinData {
@DatabaseField(generatedId = true)
private int id;
@DatabaseField(foreign = true)
private PlayerData mainPlayer;
@DatabaseField
private boolean adminNoticed;
@DatabaseField
private UUID uuid;
// Getters and setters...
}
Когда я пытаюсь перебрать PlayerData.ips
с потоками,Я получаю SQLException [SQLITE_ERROR] SQL error or missing database (no such column: playerData_id)
.Таблицы генерируются автоматически с TableUtils.createIfNotExists()
.
. Этот код вызывает это исключение:
// playerData is retrieved from Dao<PlayerData, Integer>
playerData.getIps().stream().noneMatch(ip -> ip.getAddress().equals(playerIp))
Я просто не понимаю, почему он пытается выбрать столбец playerData_id
,Нужно ли вручную создавать таблицы базы данных для TwinData
и IpData
со столбцом playerData_id
?Еще не пробовал, но не думаю, что это поможет.