让我们考虑这个图表
使用 Track 类的这个 JPA 片段。
@Entity
@Table(name = "track")
public class Track {
@Id
@Type(type="pg-uuid")
private UUID id;
@Column(name = "genre")
private String genre;
/* Getters, setters, etc */
}
和数据库模式
/** Liquibase */
<changeSet id="1" author="SoulBeaver">
<createTable tableName="genre">
<column name="name" type="VARCHAR(1024)">
<constraints primaryKey="true" nullable="false" />
</column>
</createTable>
<createTable tableName="track">
<column name="id" type="UUID">
<constraints primaryKey="true" nullable="false" />
</column>
<column name="genre" type="VARCHAR(1024)" />
</createTable>
<addForeignKeyConstraint baseTableName="track" baseColumnNames="genre" constraintName="genre_fk"
referencedTableName="genre"
referencedColumnNames="name" />
</changeSet>
现在,当我尝试保留一个轨道时,它已被赋予 track.setGenre("Rock"); 我收到一个 RuntimeError 说明该密钥在 Genre 中不存在。
有什么办法可以避免必须创建 Genre 类,首先坚持 Genre,最后坚持 Track?