Suggerirò un approccio diverso anche se è una domanda un po' più vecchia. Invece di creare due entità, dovresti crearne tre.
Crea FileMetadata, che contiene nome, tipo MIME, ecc. Crea FileContent, che contiene il contenuto. Quindi, crea un terzo file di entità che mantiene una connessione uno a uno con uno di ciascuno degli altri tipi e forniscigli un gruppo di metodi che chiamano semplicemente i metodi di corrispondenza sulle sottoentità.
Quindi, ad esempio in File, il metodo setName sarebbe simile a questo:
public function setName() {
$this->getFileMetadata()->getName();
}
E il set sarebbe simile a questo:
public function setName( $name ) {
$this->getFileMetadata()->setName( $name );
}
Il costruttore dell'entità File dovrebbe creare un nuovo FileMetadata e un nuovo FileContent durante la creazione e NON dovrebbe avere un metodo setFilemetadata o setFilecontent; queste due entità dovrebbero essere completamente protette dalla tua applicazione.
Ora hai l'entità File, che gestisce esattamente come desideri (una singola entità, nessuna entità secondaria aggiuntiva) che è ancora archiviata ordinatamente in due (beh, tre davvero) tabelle diverse.