Erro ao utilizar CascadeType.PERSIST em atributo ManyToOne de EmbeddedId

Possuo uma isntância de Calendario contendo um a id composta que onde um dos atributos é um periodo.
Caso o periodo ainda não exista, gostaria de inseri-lo em cascata.

@Entity
@Table(name = "calendario_aprop_mao_obra", schema = "amo")
public class Calendario implements Serializable {
	@EmbeddedId
	private CalendarioID comp_id;

	(...)
}

@Embeddable
public class CalendarioID implements Serializable {
	@ManyToOne(fetch = FetchType.EAGER)
	@Cascade(value = {CascadeType.PERSIST})
	@JoinColumn(name = "ano_mes_calamo", nullable = false)
	private Periodo periodo;

	@ManyToOne
	@JoinColumn(name = "num_etapa_calamo", nullable = false)
	private Etapa etapa;
	
	(...)
}

@Entity
@Table(name = "periodo_aprop_mao_obra", schema = "amo")
public class Periodo implements Serializable {
	@Id
	@Column(name = "ano_mes_peramo", nullable = false)
	private Integer id;

	(...)
}

Ao persistir, tenho recebido a seguinte exceção:

14:37:00,035 DEBUG [SQL] 
    insert 
    into
        amo.calendario_aprop_mao_obra
        (data_inic_calamo, data_fim_calamo, ano_mes_calamo, num_etapa_calamo) 
    values
        (?, ?, ?, ?)
14:37:00,082 TRACE [TimestampType] binding '2009-07-15 14:36:59' to parameter: 1
14:37:00,082 TRACE [TimestampType] binding '2009-07-15 14:36:59' to parameter: 2
14:37:00,082 TRACE [IntegerType] binding '200907' to parameter: 3
14:37:00,082 TRACE [IntegerType] binding '1' to parameter: 4
14:37:00,160 WARN  [JDBCExceptionReporter] SQL Error: 0, SQLState: null
14:37:00,160 ERROR [JDBCExceptionReporter] Entrada em lote 0 insert into amo.calendario_aprop_mao_obra (data_inic_calamo, 

data_fim_calamo, ano_mes_calamo, num_etapa_calamo) values (2009-07-15 14:36:59.925000 -03:00:00, 2009-07-15 14:36:59.925000 

-03:00:00, 200907, 1) foi abortada. Chame getNextException para ver a causa.
14:37:00,160 WARN  [JDBCExceptionReporter] SQL Error: 0, SQLState: 23503
14:37:00,160 ERROR [JDBCExceptionReporter] ERROR: insert or update on table "calendario_aprop_mao_obra" violates foreign key 

constraint "r_peramo_calamo"
  Detalhe: Key (ano_mes_calamo)=(200907) is not present in table "periodo_aprop_mao_obra".
14:37:00,160 ERROR [AbstractFlushingEventListener] Could not synchronize database state with session
org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update

Gostaria bastante de poder usar o @Cascade, estou me batendo a algum tempo e não consigo enxergar onde está o erro.

Mapeei o OneToMany e quando persisto o pai (1) está persistindo o filho(n), mas quando persisto o filho (n) não consigo persistir o pai (1).

up!