После получения изображения из галереи просто передайте URI описанным ниже способом только для Android 4.4 (KitKat):
public String getPath(Uri contentUri) {// Will return "image:x*"
String wholeID = DocumentsContract.getDocumentId(contentUri);
// Split at colon, use second item in the array
String id = wholeID.split(":")[1];
String[] column = { MediaStore.Images.Media.DATA };
// Where id is equal to
String sel = MediaStore.Images.Media._ID + "=?";
Cursor cursor = getContentResolver().query(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, column, sel,
new String[] { id }, null);
String filePath = "";
int columnIndex = cursor.getColumnIndex(column[0]);
if (cursor.moveToFirst()) {
filePath = cursor.getString(columnIndex);
}
cursor.close();
return filePath;
}
Как говорит Матье, единственный случай, когда вы не хотели бы устанавливать inverse = true, - это когда дочерний элемент не имеет смысла отвечать за само обновление, например, в случае где ребенок ничего не знает о своем родителе.
Давайте попробуем реальный мир, а вовсе не надуманный пример:
<class name="SpyMaster" table="SpyMaster" lazy="true">
<id name="Id">
<generator class="identity"/>
</id>
<property name="Name"/>
<set name="Spies" table="Spy" cascade="save-update">
<key column="SpyMasterId"/>
<one-to-many class="Spy"/>
</set>
</class>
<class name="Spy" table="Spy" lazy="true">
<id name="Id">
<generator class="identity"/>
</id>
<property name="Name"/>
</class>
Шпионы могут иметь шпионов, но шпионы никогда не знают, кто их шпион, потому что мы не включили многие Индивидуальные отношения в классе шпиона. Также (удобно) шпион может превратиться в мошенника, поэтому его не нужно связывать с начальником шпионской сети. Мы можем создавать объекты следующим образом:
var sm = new SpyMaster
{
Name = "Head of Operation Treadstone"
};
sm.Spies.Add(new Spy
{
Name = "Bourne",
//SpyMaster = sm // Can't do this
});
session.Save(sm);
В таком случае вы должны установить для столбца FK значение NULL, потому что процесс сохранения sm будет вставлен в таблицу SpyMaster и таблицу Spy, и только после этого он будет обновлять Spy стол для набора ФК. В таком случае,
Если вы хотите иметь однонаправленную ассоциацию, т.е. чтобы дети не могли переходить к Родителю. В этом случае столбец FK должен иметь значение NULLABLE, потому что дочерние элементы будут сохранены раньше родительского.