diff --git a/README.md b/README.md
index 643e84b750ddbc4a487ade70b9b388b8e49d3c34..7b8c3b68b18748b4d783f0ffbb3f3557a9288800 100644
--- a/README.md
+++ b/README.md
@@ -95,11 +95,11 @@ To retrieve a list of records that match given criteria, you can use the `findBy
 $rows = $table->findBy($conditions, $orderBy, $paginator);
 ```
 
-There are also two pairs of helper methods to retrieve a *single* record that matches given criteria: `getOneBy()` and `findOneBy()` look for a unique record and throw an exception when the query yields more than one result. In addition, `getOneBy()` fails if no record is found, whereas `findOneBy()` returns null in such case.
+There are also two pairs of helper methods to retrieve a *single* record that matches given criteria: `getUniqueBy()` and `findUniqueBy()` look for a unique record and throw an exception when the query yields more than one result. In addition, `getUniqueBy()` fails if no record is found, whereas `findUniqueBy()` returns null in such case.
 
 ```php
-$row = $table->getOneBy($conditions);
-$rowOrNull = $table->findOneBy($conditions);
+$row = $table->getUniqueBy($conditions);
+$rowOrNull = $table->findUniqueBy($conditions);
 ```
 
 And `getFirstBy()` and `findFirstBy()` return the first record that matches given criteria, regardless of whether there are more of them in the table.
diff --git a/src/Scaffolding/TableImplementation.php b/src/Scaffolding/TableImplementation.php
index 5243912241ec8f751c96ca14fcfaff27ed968658..44c946141a22ba6861d1c0e1970e5e23968a3aeb 100644
--- a/src/Scaffolding/TableImplementation.php
+++ b/src/Scaffolding/TableImplementation.php
@@ -148,7 +148,7 @@ final class TableImplementation implements Capability
 
 
 		$namespace->addUse(TooManyRowsFound::class);
-		$classType->addMethod('getOneBy')
+		$classType->addMethod('getUniqueBy')
 			->setParameters([
 				(new Code\Parameter('conditions'))->setType(Condition::class . '|array'),
 			])
@@ -160,7 +160,7 @@ final class TableImplementation implements Capability
 			->addBody('\assert($row instanceof ?);', [new Code\Literal($namespace->simplifyName($this->rowClass))])
 			->addBody('return $row;');
 
-		$classType->addMethod('findOneBy')
+		$classType->addMethod('findUniqueBy')
 			->setParameters([
 				(new Code\Parameter('conditions'))->setType(Condition::class . '|array'),
 			])
@@ -209,9 +209,9 @@ final class TableImplementation implements Capability
 			->addComment('@param Condition|Condition[] $conditions')
 			->addComment('@return ' . $namespace->simplifyName($this->rowClass))
 			->addComment('@throws RowNotFound')
-			->addAttribute(\Deprecated::class, ['Use getOneBy() instead.'])
+			->addAttribute(\Deprecated::class, ['Use getUniqueBy() instead.'])
 			->setReturnType($this->rowClass)
-			->addBody('return $this->getOneBy($conditions);');
+			->addBody('return $this->getUniqueBy($conditions);');
 
 
 		$newMethod = $classType->addMethod('new')
diff --git a/tests/ConfigTableTest.phpt b/tests/ConfigTableTest.phpt
index a705a0d9e1acf25397a46c908a35aff51c5c195c..3b783a3410fc3a065d10a9db3e184d7ceb72d9ca 100644
--- a/tests/ConfigTableTest.phpt
+++ b/tests/ConfigTableTest.phpt
@@ -22,17 +22,17 @@ $table = new ConfigTable(
 	TestFixtures::createTypeResolver($connection),
 );
 
-$row = $table->getOneBy($table->key()->is('key1'));
+$row = $table->getUniqueBy($table->key()->is('key1'));
 Assert::same('same value', $row->getValue());
 
-Assert::throws(fn() => $table->getOneBy($table->key()->is('key4')), RowNotFound::class);
-Assert::throws(fn() => $table->getOneBy($table->value()->is('same value')), TooManyRowsFound::class);
+Assert::throws(fn() => $table->getUniqueBy($table->key()->is('key4')), RowNotFound::class);
+Assert::throws(fn() => $table->getUniqueBy($table->value()->is('same value')), TooManyRowsFound::class);
 
-$row = $table->findOneBy($table->key()->is('key1'));
+$row = $table->findUniqueBy($table->key()->is('key1'));
 Assert::same('same value', $row->getValue());
 
-Assert::null($table->findOneBy($table->key()->is('key4')));
-Assert::throws(fn() => $table->findOneBy($table->value()->is('same value')), TooManyRowsFound::class);
+Assert::null($table->findUniqueBy($table->key()->is('key4')));
+Assert::throws(fn() => $table->findUniqueBy($table->value()->is('same value')), TooManyRowsFound::class);
 
 $row = $table->getFirstBy($table->key()->is('key1'));
 Assert::same('same value', $row->getValue());
diff --git a/tests/Fixtures/ConfigTable.php b/tests/Fixtures/ConfigTable.php
index 660d80fb18e6f422a1cb3586833f54e6f3196483..8ab3b8bcaa6c9aa727d2ed187cd2eeb681dab589 100644
--- a/tests/Fixtures/ConfigTable.php
+++ b/tests/Fixtures/ConfigTable.php
@@ -127,7 +127,7 @@ final class ConfigTable implements Table
 	 * @return ConfigRow
 	 * @throws RowNotFound
 	 */
-	public function getOneBy(Condition|array $conditions): ConfigRow
+	public function getUniqueBy(Condition|array $conditions): ConfigRow
 	{
 		$row = $this->tableManager->findOneBy($this, $conditions, required: true, unique: true);
 		\assert($row instanceof ConfigRow);
@@ -140,7 +140,7 @@ final class ConfigTable implements Table
 	 * @return ConfigRow|null
 	 * @throws RowNotFound
 	 */
-	public function findOneBy(Condition|array $conditions): ?ConfigRow
+	public function findUniqueBy(Condition|array $conditions): ?ConfigRow
 	{
 		$row = $this->tableManager->findOneBy($this, $conditions, required: false, unique: true);
 		\assert($row instanceof ConfigRow || $row === null);
@@ -180,10 +180,10 @@ final class ConfigTable implements Table
 	 * @return ConfigRow
 	 * @throws RowNotFound
 	 */
-	#[\Deprecated('Use getOneBy() instead.')]
+	#[\Deprecated('Use getUniqueBy() instead.')]
 	public function getBy(Condition|array $conditions): ConfigRow
 	{
-		return $this->getOneBy($conditions);
+		return $this->getUniqueBy($conditions);
 	}
 
 
diff --git a/tests/Fixtures/GeneratedTable.php b/tests/Fixtures/GeneratedTable.php
index ee0834412cbe41e9dc14300214620d23babe826a..71a7011bdb90daaf246e93a8e1d1c37bc676431c 100644
--- a/tests/Fixtures/GeneratedTable.php
+++ b/tests/Fixtures/GeneratedTable.php
@@ -127,7 +127,7 @@ final class GeneratedTable implements Table
 	 * @return GeneratedRow
 	 * @throws RowNotFound
 	 */
-	public function getOneBy(Condition|array $conditions): GeneratedRow
+	public function getUniqueBy(Condition|array $conditions): GeneratedRow
 	{
 		$row = $this->tableManager->findOneBy($this, $conditions, required: true, unique: true);
 		\assert($row instanceof GeneratedRow);
@@ -140,7 +140,7 @@ final class GeneratedTable implements Table
 	 * @return GeneratedRow|null
 	 * @throws RowNotFound
 	 */
-	public function findOneBy(Condition|array $conditions): ?GeneratedRow
+	public function findUniqueBy(Condition|array $conditions): ?GeneratedRow
 	{
 		$row = $this->tableManager->findOneBy($this, $conditions, required: false, unique: true);
 		\assert($row instanceof GeneratedRow || $row === null);
@@ -180,10 +180,10 @@ final class GeneratedTable implements Table
 	 * @return GeneratedRow
 	 * @throws RowNotFound
 	 */
-	#[\Deprecated('Use getOneBy() instead.')]
+	#[\Deprecated('Use getUniqueBy() instead.')]
 	public function getBy(Condition|array $conditions): GeneratedRow
 	{
-		return $this->getOneBy($conditions);
+		return $this->getUniqueBy($conditions);
 	}
 
 
diff --git a/tests/Fixtures/PackagesTable.php b/tests/Fixtures/PackagesTable.php
index cd53a918b8dfb1e11d046a186f8ede02cd926eb2..c60e1ebd157b8d78fd979aeb6da1a7a7731706c9 100644
--- a/tests/Fixtures/PackagesTable.php
+++ b/tests/Fixtures/PackagesTable.php
@@ -127,7 +127,7 @@ final class PackagesTable implements Table
 	 * @return PackageRow
 	 * @throws RowNotFound
 	 */
-	public function getOneBy(Condition|array $conditions): PackageRow
+	public function getUniqueBy(Condition|array $conditions): PackageRow
 	{
 		$row = $this->tableManager->findOneBy($this, $conditions, required: true, unique: true);
 		\assert($row instanceof PackageRow);
@@ -140,7 +140,7 @@ final class PackagesTable implements Table
 	 * @return PackageRow|null
 	 * @throws RowNotFound
 	 */
-	public function findOneBy(Condition|array $conditions): ?PackageRow
+	public function findUniqueBy(Condition|array $conditions): ?PackageRow
 	{
 		$row = $this->tableManager->findOneBy($this, $conditions, required: false, unique: true);
 		\assert($row instanceof PackageRow || $row === null);
@@ -180,10 +180,10 @@ final class PackagesTable implements Table
 	 * @return PackageRow
 	 * @throws RowNotFound
 	 */
-	#[\Deprecated('Use getOneBy() instead.')]
+	#[\Deprecated('Use getUniqueBy() instead.')]
 	public function getBy(Condition|array $conditions): PackageRow
 	{
-		return $this->getOneBy($conditions);
+		return $this->getUniqueBy($conditions);
 	}
 
 
diff --git a/tests/Fixtures/TestsTable.php b/tests/Fixtures/TestsTable.php
index 66a5e647a643ec51b2b5c8c7758b93557728e9cb..a5660bc9bb02944620646285ff7f18753410786a 100644
--- a/tests/Fixtures/TestsTable.php
+++ b/tests/Fixtures/TestsTable.php
@@ -127,7 +127,7 @@ final class TestsTable implements Table
 	 * @return TestRow
 	 * @throws RowNotFound
 	 */
-	public function getOneBy(Condition|array $conditions): TestRow
+	public function getUniqueBy(Condition|array $conditions): TestRow
 	{
 		$row = $this->tableManager->findOneBy($this, $conditions, required: true, unique: true);
 		\assert($row instanceof TestRow);
@@ -140,7 +140,7 @@ final class TestsTable implements Table
 	 * @return TestRow|null
 	 * @throws RowNotFound
 	 */
-	public function findOneBy(Condition|array $conditions): ?TestRow
+	public function findUniqueBy(Condition|array $conditions): ?TestRow
 	{
 		$row = $this->tableManager->findOneBy($this, $conditions, required: false, unique: true);
 		\assert($row instanceof TestRow || $row === null);
@@ -180,10 +180,10 @@ final class TestsTable implements Table
 	 * @return TestRow
 	 * @throws RowNotFound
 	 */
-	#[\Deprecated('Use getOneBy() instead.')]
+	#[\Deprecated('Use getUniqueBy() instead.')]
 	public function getBy(Condition|array $conditions): TestRow
 	{
-		return $this->getOneBy($conditions);
+		return $this->getUniqueBy($conditions);
 	}
 
 
diff --git a/tests/TableTest.php b/tests/TableTest.php
index aaad186104fa1c703d3a900ab1c28ed3c8a62dc1..791cbeec8118e15e62bebf8b7e00f49033b4b21f 100644
--- a/tests/TableTest.php
+++ b/tests/TableTest.php
@@ -112,7 +112,7 @@ $nullDetails = $table->findBy($table->details()->is(null));
 Assert::count(1, $nullDetails);
 Assert::same(0, $nullDetails[0]->getScore());
 
-$unique = $table->getOneBy($table->score()->is(42));
+$unique = $table->getUniqueBy($table->score()->is(42));
 Assert::same(42, $unique->getScore());
 
 $table->update($table->edit(